aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Noldor2010-02-15 23:28:26 +0000
committerGravatar Noldor2010-02-15 23:28:26 +0000
commit049dba7b7379b80c08a31389434cf451ee489936 (patch)
tree417b8d65fc24cc24ebb92ad3ab1f4736aa056a0d /src
parentquick compilation fix (diff)
downloadKVIrc-049dba7b7379b80c08a31389434cf451ee489936.tar.gz
KVIrc-049dba7b7379b80c08a31389434cf451ee489936.tar.bz2
KVIrc-049dba7b7379b80c08a31389434cf451ee489936.zip
Rewrited Aliaseditor code
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@3974 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
-rw-r--r--src/modules/aliaseditor/aliaseditor.cpp954
-rw-r--r--src/modules/aliaseditor/aliaseditor.h127
2 files changed, 445 insertions, 636 deletions
diff --git a/src/modules/aliaseditor/aliaseditor.cpp b/src/modules/aliaseditor/aliaseditor.cpp
index 133a9c82d..733940f63 100644
--- a/src/modules/aliaseditor/aliaseditor.cpp
+++ b/src/modules/aliaseditor/aliaseditor.cpp
@@ -62,16 +62,22 @@ extern KviAliasEditorWindow * g_pAliasEditorWindow;
extern KviModule * g_pAliasEditorModule;
KviAliasEditorTreeWidgetItem::KviAliasEditorTreeWidgetItem(QTreeWidget * pTreeWidget,Type eType,const QString &szName)
-: QTreeWidgetItem(pTreeWidget), KviHeapObject(), m_eType(eType), m_pParentNamespaceItem(0)
+: QTreeWidgetItem(pTreeWidget), KviHeapObject(), m_eType(eType), m_pParentItem(0)
{
setName(szName);
+ m_cPos=0;
+ if(eType==KviAliasEditorTreeWidgetItem::Namespace) setIcon(0,QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NAMESPACE))));
+ else setIcon(0,QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ALIAS))));
}
-KviAliasEditorTreeWidgetItem::KviAliasEditorTreeWidgetItem(KviAliasNamespaceTreeWidgetItem * pParentNamespaceItem,Type eType,const QString &szName)
-: QTreeWidgetItem(pParentNamespaceItem), m_eType(eType), m_pParentNamespaceItem(pParentNamespaceItem)
+KviAliasEditorTreeWidgetItem::KviAliasEditorTreeWidgetItem(KviAliasEditorTreeWidgetItem * pParentItem,Type eType,const QString &szName)
+: QTreeWidgetItem(pParentItem), m_eType(eType), m_pParentItem(pParentItem)
{
setName(szName);
+ m_cPos=0;
setFlags(Qt::ItemIsEditable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
+ if(eType==KviAliasEditorTreeWidgetItem::Namespace) setIcon(0,QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NAMESPACE))));
+ else setIcon(0,QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ALIAS))));
}
void KviAliasEditorTreeWidgetItem::setName(const QString &szName)
@@ -79,124 +85,13 @@ void KviAliasEditorTreeWidgetItem::setName(const QString &szName)
m_szName = szName;
setText(0,m_szName);
}
-
-KviAliasTreeWidgetItem::KviAliasTreeWidgetItem(KviAliasNamespaceTreeWidgetItem * pParentNamespaceItem,const QString &szName)
-: KviAliasEditorTreeWidgetItem(pParentNamespaceItem,KviAliasEditorTreeWidgetItem::Alias,szName)
-{
- setIcon(0,QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ALIAS))));
- m_cPos=0;
-
-}
-
-
-KviAliasTreeWidgetItem::KviAliasTreeWidgetItem(QTreeWidget * pTreeWidget,const QString &szName)
-: KviAliasEditorTreeWidgetItem(pTreeWidget,KviAliasEditorTreeWidgetItem::Alias,szName)
-{
- setIcon(0,QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ALIAS))));
- m_cPos=0;
-
-}
-
-KviAliasTreeWidgetItem::~KviAliasTreeWidgetItem()
-{
-}
-
-KviAliasNamespaceTreeWidgetItem::KviAliasNamespaceTreeWidgetItem(QTreeWidget * pTreeWidget,const QString &szName)
-: KviAliasEditorTreeWidgetItem(pTreeWidget,KviAliasEditorTreeWidgetItem::Namespace,szName)
-{
- setIcon(0,QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NAMESPACE))));
-}
-
-KviAliasNamespaceTreeWidgetItem::KviAliasNamespaceTreeWidgetItem(KviAliasNamespaceTreeWidgetItem * pParentNamespaceItem,const QString &szName)
-: KviAliasEditorTreeWidgetItem(pParentNamespaceItem,KviAliasEditorTreeWidgetItem::Namespace,szName)
-{
- setIcon(0,QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NAMESPACE))));
-}
-
-KviAliasNamespaceTreeWidgetItem::~KviAliasNamespaceTreeWidgetItem()
-{
-}
-
-KviAliasNamespaceTreeWidgetItem * KviAliasNamespaceTreeWidgetItem::findNamespaceItem(const QString &szName)
+void KviAliasEditorTreeWidgetItem::setType(Type t)
{
- for (int i=0;i<childCount();i++)
- {
- if (((KviAliasEditorTreeWidgetItem *)child(i))->isNamespace())
- if(KviQString::equalCI(szName,((KviAliasEditorTreeWidgetItem *)child(i))->name()))return (KviAliasNamespaceTreeWidgetItem *)child(i);
- }
- return 0;
-}
-
-KviAliasNamespaceTreeWidgetItem * KviAliasNamespaceTreeWidgetItem::getNamespaceItem(const QString &szName)
-{
- KviAliasNamespaceTreeWidgetItem * it = findNamespaceItem(szName);
- if(it)return it;
- it = new KviAliasNamespaceTreeWidgetItem(this,szName);
- return it;
-}
-
-KviAliasTreeWidgetItem * KviAliasNamespaceTreeWidgetItem::findAliasItem(const QString &szName)
-{
- for (int i=0;i<childCount();i++)
- {
- if (((KviAliasEditorTreeWidgetItem *)child(i))->isAlias())
- if(KviQString::equalCI(szName,((KviAliasEditorTreeWidgetItem *)child(i))->name()))return (KviAliasTreeWidgetItem *)child(i);
- }
- return 0;
-}
-
-KviAliasTreeWidgetItem * KviAliasNamespaceTreeWidgetItem::getAliasItem(const QString &szName)
-{
- KviAliasTreeWidgetItem * it = findAliasItem(szName);
- if(it)return it;
- it = new KviAliasTreeWidgetItem(this,szName);
- return it;
-}
-
-
-KviAliasTreeWidgetItem * KviAliasNamespaceTreeWidgetItem::createFullAliasItem(const QString &szFullName)
-{
- QStringList lNamespaces;
- QString szName;
- KviAliasEditor::splitFullAliasOrNamespaceName(szFullName,lNamespaces,szName);
-
- if(lNamespaces.isEmpty())
- return getAliasItem(szName);
-
- QStringList::Iterator it = lNamespaces.begin();
-
- KviAliasNamespaceTreeWidgetItem * nit = getNamespaceItem(*it);
- ++it;
- while(it != lNamespaces.end())
- {
- nit = nit->getNamespaceItem(*it);
- ++it;
- }
-
- return nit->getAliasItem(szName);
+ m_eType=t;
+ if(t==KviAliasEditorTreeWidgetItem::Namespace) setIcon(0,QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NAMESPACE))));
+ else setIcon(0,QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ALIAS))));
}
-KviAliasNamespaceTreeWidgetItem * KviAliasNamespaceTreeWidgetItem::createFullNamespaceItem(const QString &szFullName)
-{
- QStringList lNamespaces;
- QString szName;
- KviAliasEditor::splitFullAliasOrNamespaceName(szFullName,lNamespaces,szName);
-
- if(lNamespaces.isEmpty())
- return getNamespaceItem(szName);
-
- QStringList::Iterator it = lNamespaces.begin();
-
- KviAliasNamespaceTreeWidgetItem * nit = getNamespaceItem(*it);
- ++it;
- while(it != lNamespaces.end())
- {
- nit = nit->getNamespaceItem(*it);
- ++it;
- }
-
- return nit->getNamespaceItem(szName);
-}
KviAliasEditorTreeWidget::KviAliasEditorTreeWidget(QWidget * par)
: QTreeWidget(par)
{
@@ -223,6 +118,8 @@ void KviAliasEditorTreeWidget::mousePressEvent (QMouseEvent *e)
}
QTreeWidget::mousePressEvent(e);
}
+
+
KviAliasEditor::KviAliasEditor(QWidget * par)
: QWidget(par)
{
@@ -256,6 +153,7 @@ KviAliasEditor::KviAliasEditor(QWidget * par)
m_pRenameButton->setToolTip(__tr2qs_ctx("Edit the alias or namespace name","editor"));
m_pEditor = KviScriptEditor::createInstance(box);
m_pEditor->setFocus();
+
connect(m_pEditor,SIGNAL(find(const QString &)),this,SLOT(slotFindWord(const QString &)));
connect(m_pEditor,SIGNAL(replaceAll(const QString &,const QString &)),this,SLOT(slotReplaceAll(const QString &,const QString &)));
@@ -263,7 +161,7 @@ KviAliasEditor::KviAliasEditor(QWidget * par)
oneTimeSetup();
- currentItemChanged(0,0);
+ currentItemChanged(0,0);
}
KviAliasEditor::~KviAliasEditor()
@@ -271,87 +169,28 @@ KviAliasEditor::~KviAliasEditor()
KviScriptEditor::destroyInstance(m_pEditor);
}
-KviAliasNamespaceTreeWidgetItem * KviAliasEditor::findNamespaceItem(const QString &szName)
-{
-
- int count=m_pTreeWidget->topLevelItemCount();
- for (int i=0;i<count;i++)
- {
- KviAliasNamespaceTreeWidgetItem * item=(KviAliasNamespaceTreeWidgetItem *)m_pTreeWidget->topLevelItem(i);
- if(KviQString::equalCI(szName,item->name()))
- return item;
- }
- return 0;
-}
-
-KviAliasNamespaceTreeWidgetItem * KviAliasEditor::getNamespaceItem(const QString &szName)
-{
- KviAliasNamespaceTreeWidgetItem * it = findNamespaceItem(szName);
- if(it)return it;
- it = new KviAliasNamespaceTreeWidgetItem(m_pTreeWidget,szName);
- return it;
-}
-KviAliasTreeWidgetItem * KviAliasEditor::findAliasItemRecursive(KviAliasEditorTreeWidgetItem *parent,const QString &szName)
+void KviAliasEditor::buildFullItemPath(KviAliasEditorTreeWidgetItem * it,QString &szBuffer)
{
- for (int i=0;i<parent->childCount();i++)
- {
- KviAliasEditorTreeWidgetItem *item=(KviAliasEditorTreeWidgetItem *)parent->child(i);
-
- if (!item->isAlias()){
- KviAliasTreeWidgetItem * itemret=findAliasItemRecursive(item,szName);
- if (itemret) return (KviAliasTreeWidgetItem*)itemret;
- }
- else{
- if(KviQString::equalCI(szName,item->name()))
- return (KviAliasTreeWidgetItem*)item;
- }
- }
- return false;
-}
-
-KviAliasTreeWidgetItem * KviAliasEditor::findAliasItem(const QString &szName)
-{
- for (int i=0;i<m_pTreeWidget->topLevelItemCount();i++)
- {
- KviAliasEditorTreeWidgetItem *item=(KviAliasEditorTreeWidgetItem *)m_pTreeWidget->topLevelItem(i);
- if (!item->isAlias())
- {
- KviAliasTreeWidgetItem * it=findAliasItemRecursive(item,szName);
- if (it) return it;
- }
- else {
- if(KviQString::equalCI(szName,item->name())) return (KviAliasTreeWidgetItem*)item;
- }
- }
- return false;
-}
-
-KviAliasTreeWidgetItem * KviAliasEditor::getAliasItem(const QString &szName)
-{
- KviAliasTreeWidgetItem * it = findAliasItem(szName);
- if(it)return it;
- it = new KviAliasTreeWidgetItem(m_pTreeWidget,szName);
- return it;
-}
-
-void KviAliasEditor::splitFullAliasOrNamespaceName(const QString &szFullName,QStringList &lNamespaces,QString &szName)
-{
- lNamespaces = szFullName.split("::");
- if(lNamespaces.count() < 1)
- {
- szName = "unnamed";
- lNamespaces.append(QString(""));
- return;
- }
- szName = lNamespaces.last();
- lNamespaces.removeLast();
+ if (it->isAlias()) it=it->parentItem();
+ if (!it) return;
+ while(it)
+ {
+ QString tmp = it->name();
+ if(!tmp.isEmpty())
+ {
+ szBuffer.prepend("::");
+ szBuffer.prepend(tmp);
+ }
+ it = it->parentItem();
+ }
}
QString KviAliasEditor::buildFullItemName(KviAliasEditorTreeWidgetItem * it)
{
if(!it) return QString();
QString szName = it->name();
- KviAliasNamespaceTreeWidgetItem * nit = it->parentNamespaceItem();
+ KviAliasEditorTreeWidgetItem * nit = it->parentItem();
+
while(nit)
{
QString tmp = nit->name();
@@ -360,56 +199,87 @@ QString KviAliasEditor::buildFullItemName(KviAliasEditorTreeWidgetItem * it)
szName.prepend("::");
szName.prepend(tmp);
}
- nit = nit->parentNamespaceItem();
+ nit = nit->parentItem();
}
return szName;
}
-
-KviAliasTreeWidgetItem * KviAliasEditor::createFullAliasItem(const QString &szFullName)
+KviAliasEditorTreeWidgetItem * KviAliasEditor::findTopLevelItem(const QString &szName)
{
- QStringList lNamespaces;
- QString szName;
- splitFullAliasOrNamespaceName(szFullName,lNamespaces,szName);
+ for(int i=0;i<m_pTreeWidget->topLevelItemCount();i++)
+ {
+ if (m_pTreeWidget->topLevelItem(i)->text(0)==szName) return (KviAliasEditorTreeWidgetItem*)m_pTreeWidget->topLevelItem(i);
+ }
+ return 0;
+}
- if(lNamespaces.isEmpty())
- return getAliasItem(szName);
- QStringList::Iterator it = lNamespaces.begin();
- KviAliasNamespaceTreeWidgetItem * nit = getNamespaceItem(*it);
- ++it;
- while(it != lNamespaces.end())
- {
- nit = nit->getNamespaceItem(*it);
- ++it;
- }
+KviAliasEditorTreeWidgetItem * KviAliasEditor::findItem(const QString &szFullName)
+{
+ QStringList lNamespaces=szFullName.split("::");
+ if(!lNamespaces.count()) return 0;
+ KviAliasEditorTreeWidgetItem *pTopLevelItem=findTopLevelItem(lNamespaces.at(0));
+ if (lNamespaces.count()==1 || !pTopLevelItem) return pTopLevelItem;
+ int iLevel=1;
+ return findItemRecursive(pTopLevelItem,lNamespaces,iLevel);
+}
+KviAliasEditorTreeWidgetItem * KviAliasEditor::findItemRecursive(QTreeWidgetItem *pCurrent,QStringList & lNameSpaces,int & iLevel)
+{
- return nit->getAliasItem(szName);
+ for(int i=0;i<pCurrent->childCount();i++)
+ {
+ if (pCurrent->child(i)->text(0)==lNameSpaces.at(iLevel))
+ {
+ iLevel++;
+ pCurrent=pCurrent->child(i);
+ if (iLevel==lNameSpaces.count()) return (KviAliasEditorTreeWidgetItem*)pCurrent;
+ return findItemRecursive(pCurrent,lNameSpaces,iLevel);
+ }
+ }
+ return 0;
}
-KviAliasNamespaceTreeWidgetItem * KviAliasEditor::createFullNamespaceItem(const QString &szFullName)
+KviAliasEditorTreeWidgetItem * KviAliasEditor::createFullItem(const QString &szFullName)
{
- QStringList lNamespaces;
- QString szName;
- splitFullAliasOrNamespaceName(szFullName,lNamespaces,szName);
+ QStringList lNamespaces=szFullName.split("::");
+ QString szName;
+ KviAliasEditorTreeWidgetItem *pItem;
+ if(!lNamespaces.count()) return 0;
+ if (lNamespaces.count()==1)
+ {
+ pItem=new KviAliasEditorTreeWidgetItem(m_pTreeWidget,KviAliasEditorTreeWidgetItem::Alias,lNamespaces.at(0));
+ return pItem;
+ }
+ KviAliasEditorTreeWidgetItem *pTopLevelItem=findTopLevelItem(lNamespaces.at(0));
+ if (!pTopLevelItem)
+ pTopLevelItem=new KviAliasEditorTreeWidgetItem(m_pTreeWidget,KviAliasEditorTreeWidgetItem::Namespace,lNamespaces.at(0));
- if(lNamespaces.isEmpty())
- return getNamespaceItem(szName);
+ int iLevel=1;
- QStringList::Iterator it = lNamespaces.begin();
+ return createFullItemRecursive(pTopLevelItem,lNamespaces,iLevel);
- KviAliasNamespaceTreeWidgetItem * nit = getNamespaceItem(*it);
- ++it;
- while(it != lNamespaces.end())
- {
- nit = nit->getNamespaceItem(*it);
- ++it;
- }
- return nit->getNamespaceItem(szName);
}
-
+KviAliasEditorTreeWidgetItem * KviAliasEditor::createFullItemRecursive(QTreeWidgetItem *pCurrent,QStringList & lNameSpaces,int & iLevel)
+{
+ for(int i=0;i<pCurrent->childCount();i++)
+ {
+ if (pCurrent->child(i)->text(0)==lNameSpaces.at(iLevel))
+ {
+ iLevel++;
+ pCurrent=pCurrent->child(i);
+ if (iLevel==lNameSpaces.count()) return (KviAliasEditorTreeWidgetItem*)pCurrent;
+ return createFullItemRecursive(pCurrent,lNameSpaces,iLevel);
+ }
+ }
+ iLevel++;
+ if (iLevel==lNameSpaces.count())
+ return new KviAliasEditorTreeWidgetItem((KviAliasEditorTreeWidgetItem *)pCurrent,KviAliasEditorTreeWidgetItem::Alias,lNameSpaces.at(iLevel-1));
+ else
+ pCurrent=new KviAliasEditorTreeWidgetItem((KviAliasEditorTreeWidgetItem *)pCurrent,KviAliasEditorTreeWidgetItem::Namespace,lNameSpaces.at(iLevel-1));
+ return createFullItemRecursive(pCurrent,lNameSpaces,iLevel);
+}
void KviAliasEditor::oneTimeSetup()
{
KviPointerHashTable<QString,KviKvsScript> * a = KviKvsAliasManager::instance()->aliasDict();
@@ -417,17 +287,17 @@ void KviAliasEditor::oneTimeSetup()
KviPointerHashTableIterator<QString,KviKvsScript> it(*a);
- KviAliasTreeWidgetItem * item;
+ KviAliasEditorTreeWidgetItem * item;
while(it.current())
{
KviKvsScript * alias = it.current();
- item = createFullAliasItem(alias->name());
+ item = createFullItem(alias->name());
item->setBuffer(alias->code());
++it;
}
- connect(m_pTreeWidget,SIGNAL(currentItemChanged(QTreeWidgetItem *,QTreeWidgetItem *)),this,SLOT(currentItemChanged(QTreeWidgetItem *,QTreeWidgetItem *)));
- connect(m_pTreeWidget,SIGNAL(rightButtonPressed(QTreeWidgetItem *,QPoint)),this,SLOT(itemPressed(QTreeWidgetItem *,QPoint)));
+ connect(m_pTreeWidget,SIGNAL(currentItemChanged(QTreeWidgetItem *,QTreeWidgetItem *)),this,SLOT(currentItemChanged(QTreeWidgetItem *,QTreeWidgetItem *)));
+ connect(m_pTreeWidget,SIGNAL(rightButtonPressed(QTreeWidgetItem *,QPoint)),this,SLOT(itemPressed(QTreeWidgetItem *,QPoint)));
connect(m_pTreeWidget,SIGNAL(itemChanged(QTreeWidgetItem *,int)),this,SLOT(itemRenamed(QTreeWidgetItem *,int)));
connect(KviKvsAliasManager::instance(),SIGNAL(aliasRefresh(const QString &)),this,SLOT(aliasRefresh(const QString &)));
m_pTreeWidget->sortItems(0,Qt::AscendingOrder);
@@ -437,9 +307,9 @@ void KviAliasEditor::aliasRefresh(const QString &szName)
{
if(m_bSaving)
return;
- KviAliasTreeWidgetItem * item;
+ KviAliasEditorTreeWidgetItem * item;
KviKvsScript * alias = KviKvsAliasManager::instance()->aliasDict()->find(szName);
- item = createFullAliasItem(szName);
+ item = createFullItem(szName);
if(item!=m_pLastEditedItem)
{
item->setBuffer(alias->code());
@@ -454,7 +324,6 @@ void KviAliasEditor::aliasRefresh(const QString &szName)
item->setBuffer(alias->code());
m_pEditor->setText(alias->code());
}
-
void KviAliasEditor::itemRenamed(QTreeWidgetItem *it,int col)
{
if(it!=m_pLastEditedItem) return;
@@ -472,26 +341,16 @@ void KviAliasEditor::itemRenamed(QTreeWidgetItem *it,int col)
m_pNameLabel->setText(szLabelText);
}
-bool KviAliasEditor::hasSelectedItemsRecursive(QTreeWidgetItem *it)
-{
- for (int i=0;i<it->childCount();i++)
- {
- if (!it->child(i)->isSelected()) hasSelectedItemsRecursive((KviAliasEditorTreeWidgetItem *)it->child(i));
- else return true;
- }
- return false;
-}
+
+
bool KviAliasEditor::hasSelectedItems()
{
- for (int i=0;i<m_pTreeWidget->topLevelItemCount();i++)
- {
- if (hasSelectedItemsRecursive(m_pTreeWidget->topLevelItem(i))) return true;
- }
- return false;
+ return m_pTreeWidget->selectedItems().count()?1:0;
}
+
bool KviAliasEditor::itemExists(QTreeWidgetItem *pSearchFor)
{
- if(!pSearchFor)return false;
+ if(!pSearchFor)return false;
for (int i=0;i<m_pTreeWidget->topLevelItemCount();i++)
{
@@ -503,12 +362,12 @@ bool KviAliasEditor::itemExists(QTreeWidgetItem *pSearchFor)
if (itemExistsRecursive(pSearchFor,m_pTreeWidget->topLevelItem(i))) return true;
}
}
- }
+ }
return false;
}
bool KviAliasEditor::itemExistsRecursive(QTreeWidgetItem *pSearchFor,QTreeWidgetItem * pSearchAt)
{
- for(int i=0;i<pSearchAt->childCount();i++)
+ for(int i=0;i<pSearchAt->childCount();i++)
{
if(pSearchFor == pSearchAt->child(i))return true;
else
@@ -518,9 +377,206 @@ bool KviAliasEditor::itemExistsRecursive(QTreeWidgetItem *pSearchFor,QTreeWidget
if (itemExistsRecursive(pSearchFor,pSearchAt->child(i))) return true;
}
}
- }
+ }
return false;
}
+void KviAliasEditor::appendAllItems(KviPointerList<KviAliasEditorTreeWidgetItem> * l,KviAliasEditorTreeWidgetItem::Type eType)
+{
+ for (int i=0;i<m_pTreeWidget->topLevelItemCount();i++)
+ {
+ if (((KviAliasEditorTreeWidgetItem *)m_pTreeWidget->topLevelItem(i))->type()==eType)
+ {
+ l->append(((KviAliasEditorTreeWidgetItem *)m_pTreeWidget->topLevelItem(i)));
+ }
+ else
+ {
+ appendAllItemsRecursive(l,m_pTreeWidget->topLevelItem(i),eType);
+ }
+ }
+
+}
+
+void KviAliasEditor::appendAllItemsRecursive(KviPointerList<KviAliasEditorTreeWidgetItem> * l,QTreeWidgetItem * pStartFrom,KviAliasEditorTreeWidgetItem::Type eType)
+{
+ for (int i=0;i<pStartFrom->childCount();i++)
+ {
+ if (((KviAliasEditorTreeWidgetItem *)pStartFrom->child(i))->type()==eType)
+ {
+ l->append((KviAliasEditorTreeWidgetItem *)pStartFrom->child(i));
+ }
+ else
+ {
+ appendAllItemsRecursive(l,pStartFrom->child(i),eType);
+ }
+ }
+
+}
+
+bool KviAliasEditor::aliasExists(QString &szFullItemName)
+{
+ KviPointerList<KviAliasEditorTreeWidgetItem> l;
+ l.setAutoDelete(false);
+ appendAllItems(&l,KviAliasEditorTreeWidgetItem::Alias);
+ for(KviAliasEditorTreeWidgetItem * it = l.first();it;it = l.next())
+ {
+ if (KviQString::equalCI(buildFullItemName(it),szFullItemName))
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+bool KviAliasEditor::namespaceExists(QString &szFullItemName)
+{
+ KviPointerList<KviAliasEditorTreeWidgetItem> l;
+ l.setAutoDelete(false);
+
+ appendAllItems(&l,KviAliasEditorTreeWidgetItem::Namespace);
+ for(KviAliasEditorTreeWidgetItem * it = l.first();it;it = l.next())
+ {
+ if (KviQString::equalCI(buildFullItemName(it),szFullItemName))
+ {
+ return true;
+ }
+ }
+ return false;
+}
+void KviAliasEditor::renameItem()
+{
+ if(!m_pLastEditedItem)return;
+ if(!itemExists(m_pLastEditedItem))return; // dead ?
+
+ QString szName = buildFullItemName(m_pLastEditedItem);
+ QString szNewName;
+
+ bool bAlias = m_pLastEditedItem->isAlias();
+
+ if(bAlias)
+ szNewName = askForAliasName(__tr2qs_ctx("Rename Alias","editor"),__tr2qs_ctx("Please enter the new name for the alias","editor"),szName);
+ else
+ szNewName = askForNamespaceName(__tr2qs_ctx("Rename Namespace","editor"),__tr2qs_ctx("Please enter the new name for the namespace","editor"),szName);
+ if(szNewName.isEmpty())return;
+
+ if(szName == szNewName)return;
+
+ // check if there is already an alias with this name
+ if (bAlias)
+ {
+ if (aliasExists(szNewName))
+ {
+ g_pAliasEditorModule->lock();
+ QMessageBox::information(this,
+ __tr2qs_ctx("Alias already exists","editor"),
+ __tr2qs_ctx("This name is already in use. Please choose another one.","editor"),
+ __tr2qs_ctx("Ok, Let me try again...","editor"));
+ g_pAliasEditorModule->unlock();
+ return;
+ }
+ } else {
+ // check if there is already a namespace with this name
+ if (namespaceExists(szNewName))
+ {
+ g_pAliasEditorModule->lock();
+ QMessageBox::information(this,
+ __tr2qs_ctx("Namespace already exists","editor"),
+ __tr2qs_ctx("This name is already in use. Please choose another one.","editor"),
+ __tr2qs_ctx("Ok, Let me try again...","editor"));
+ g_pAliasEditorModule->unlock();
+ return;
+ }
+ }
+
+ QString szCode;
+ int pntCursor;
+ if(bAlias)
+ {
+ m_pEditor->getText(szCode);
+ pntCursor = m_pEditor->getCursor();
+ }
+ QList<QTreeWidgetItem*> lChildren= m_pLastEditedItem->takeChildren();
+ bool bYesToAll = true;
+ removeItem(m_pLastEditedItem,&bYesToAll,true);
+
+ m_pLastEditedItem = 0; // make sure it's true (but it already should be because of removeItem())
+ m_pLastClickedItem = 0; // make sure it's true (but it already should be because of removeItem())
+ KviAliasEditorTreeWidgetItem * pItem = createFullItem(szNewName);
+ if(bAlias)
+ {
+ pItem->setBuffer(szCode);
+ pItem->setCursorPosition(pntCursor);
+
+ } else {
+ for(int i=0;i<lChildren.count();i++)
+ {
+ ((KviAliasEditorTreeWidgetItem*)lChildren.at(i))->setParentItem(pItem);
+ pItem->insertChild(pItem->childCount(),lChildren.at(i));
+ }
+
+ }
+ activateItem(pItem);
+
+}
+
+// warning: this saves ONLY the body, not the name!
+// the name is changed explicitly with renameItem(), when needed
+
+void KviAliasEditor::saveLastEditedItem()
+{
+ if(!m_pLastEditedItem)
+ return;
+ if(!itemExists(m_pLastEditedItem) || !m_pEditor->isModified() || m_pLastEditedItem->isNamespace())
+ return;
+
+ ((KviAliasEditorTreeWidgetItem *)m_pLastEditedItem)->setCursorPosition(m_pEditor->getCursor());
+ QString newCode;
+ m_pEditor->getText(newCode);
+ ((KviAliasEditorTreeWidgetItem *)m_pLastEditedItem)->setBuffer(newCode);
+}
+
+void KviAliasEditor::currentItemChanged(QTreeWidgetItem *it,QTreeWidgetItem *)
+{
+ saveLastEditedItem();
+ m_pLastEditedItem = (KviAliasEditorTreeWidgetItem *)it;
+
+ if(!m_pLastEditedItem)
+ {
+ m_pNameLabel->setText(__tr2qs_ctx("No item selected","editor"));
+ m_pRenameButton->setEnabled(false);
+ m_pEditor->setText("");
+ m_pEditor->setEnabled(false);
+ return;
+ }
+
+ QString szNam = buildFullItemName(m_pLastEditedItem);
+ if(m_pLastEditedItem->isNamespace())
+ {
+ QString szLabelText = __tr2qs_ctx("Namespace","editor");
+ szLabelText += ": <b>";
+ szLabelText += szNam;
+ szLabelText += "</b>";
+ m_pNameLabel->setText(szLabelText);
+ m_pRenameButton->setEnabled(true);
+ m_pEditor->setText("");
+ m_pEditor->setEnabled(false);
+ m_pTreeWidget->setFocus();
+ return;
+ }
+
+ QString szLabelText = __tr2qs_ctx("Alias","editor");
+ szLabelText += ": <b>";
+ szLabelText += szNam;
+ szLabelText += "</b>";
+ m_pNameLabel->setText(szLabelText);
+ m_pRenameButton->setEnabled(true);
+ m_pEditor->setText(((KviAliasEditorTreeWidgetItem *)it)->buffer());
+
+ m_pEditor->setFocus();
+ m_pEditor->setCursorPosition(((KviAliasEditorTreeWidgetItem *)it)->cursorPosition());
+ m_pEditor->setEnabled(true);
+
+}
+
void KviAliasEditor::itemPressed(QTreeWidgetItem *it,QPoint pnt)
{
@@ -528,14 +584,14 @@ void KviAliasEditor::itemPressed(QTreeWidgetItem *it,QPoint pnt)
m_pLastClickedItem = (KviAliasEditorTreeWidgetItem *)it;
- int id;
+ int id;
m_pContextPopup->insertItem(
*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ALIAS)),
__tr2qs_ctx("Add Alias","editor"),
this,SLOT(newAlias()));
- m_pContextPopup->insertItem(
+ m_pContextPopup->insertItem(
*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ALIAS)),
__tr2qs_ctx("Add Namespace","editor"),
this,SLOT(newNamespace()));
@@ -585,7 +641,7 @@ void KviAliasEditor::itemPressed(QTreeWidgetItem *it,QPoint pnt)
__tr2qs_ctx("Collapse All Namespaces","editor"),
this,SLOT(slotCollapseNamespaces()));
- m_pContextPopup->setItemEnabled(id,bHasItems);
+ m_pContextPopup->setItemEnabled(id,bHasItems);
m_pContextPopup->popup(pnt);
}
@@ -595,12 +651,12 @@ void KviAliasEditor::recursiveSearchReplace(const QString &szSearch,KviAliasEdit
if(!it)return;
for(int i=0;i< it->childCount();i++)
{
- if(((KviAliasTreeWidgetItem *)it->child(i))->isAlias())
+ if(((KviAliasEditorTreeWidgetItem *)it->child(i))->isAlias())
{
- if(((KviAliasTreeWidgetItem *)it->child(i))->buffer().indexOf(szSearch,0,Qt::CaseInsensitive) != -1)
+ if(((KviAliasEditorTreeWidgetItem *)it->child(i))->buffer().indexOf(szSearch,0,Qt::CaseInsensitive) != -1)
{
it->child(i)->setIcon(0,QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ALIASHIGHLIGHTED))));
- if (bReplace) ((QString &)((KviAliasTreeWidgetItem *)it->child(i))->buffer()).replace(szSearch,szReplace,Qt::CaseInsensitive);
+ if (bReplace) ((QString &)((KviAliasEditorTreeWidgetItem *)it->child(i))->buffer()).replace(szSearch,szReplace,Qt::CaseInsensitive);
it->setExpanded(true);
}
else
@@ -633,9 +689,9 @@ void KviAliasEditor::slotFind()
m_pEditor->setFindText(szSearch);
for (int i=0;i<m_pTreeWidget->topLevelItemCount();i++)
{
- if(((KviAliasTreeWidgetItem *)m_pTreeWidget->topLevelItem(i))->isAlias())
+ if(((KviAliasEditorTreeWidgetItem *)m_pTreeWidget->topLevelItem(i))->isAlias())
{
- if(((KviAliasTreeWidgetItem *)m_pTreeWidget->topLevelItem(i))->buffer().indexOf(szSearch,0,Qt::CaseInsensitive) != -1)
+ if(((KviAliasEditorTreeWidgetItem *)m_pTreeWidget->topLevelItem(i))->buffer().indexOf(szSearch,0,Qt::CaseInsensitive) != -1)
{
m_pTreeWidget->topLevelItem(i)->setIcon(0,QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ALIASHIGHLIGHTED))));
} else {
@@ -650,9 +706,6 @@ void KviAliasEditor::slotFind()
void KviAliasEditor::slotFindWord(const QString &szSearch)
{
m_pEditor->setFindText(szSearch);
-
-// recursiveSearchReplace(szSearch,(KviAliasEditorTreeWidgetItem *)m_pTreeWidget->firstChild());
-
}
void KviAliasEditor::recursiveCollapseNamespaces(KviAliasEditorTreeWidgetItem * it)
@@ -666,8 +719,6 @@ void KviAliasEditor::recursiveCollapseNamespaces(KviAliasEditorTreeWidgetItem *
recursiveCollapseNamespaces((KviAliasEditorTreeWidgetItem *)it->child(i));
}
}
-// recursiveCollapseNamespaces((KviAliasEditorTreeWidgetItem *)(it->nextSibling()));
-// it->setExpanded(false);
}
void KviAliasEditor::slotCollapseNamespaces()
@@ -679,8 +730,6 @@ void KviAliasEditor::slotCollapseNamespaces()
recursiveCollapseNamespaces((KviAliasEditorTreeWidgetItem *)m_pTreeWidget->topLevelItem(i));
}
}
-
- //recursiveCollapseNamespaces((KviAliasEditorTreeWidgetItem *)m_pTreeWidget->firstChild());
}
void KviAliasEditor::slotReplaceAll(const QString &szFind,const QString &szReplace)
@@ -693,7 +742,7 @@ void KviAliasEditor::slotReplaceAll(const QString &szFind,const QString &szRepla
}
}
-void KviAliasEditor::getExportAliasBuffer(QString &buffer,KviAliasTreeWidgetItem * it)
+void KviAliasEditor::getExportAliasBuffer(QString &buffer,KviAliasEditorTreeWidgetItem * it)
{
QString szBuf = it->buffer();
KviCommandFormatter::blockFromBuffer(szBuf);
@@ -721,7 +770,7 @@ void KviAliasEditor::exportSelected()
exportAliases(true);
}
-void KviAliasEditor::exportSelectionInSinglesFiles(KviPointerList<KviAliasTreeWidgetItem> *l)
+void KviAliasEditor::exportSelectionInSinglesFiles(KviPointerList<KviAliasEditorTreeWidgetItem> *l)
{
if(!m_szDir.endsWith(QString(KVI_PATH_SEPARATOR)))m_szDir += KVI_PATH_SEPARATOR;
if (!l->first())
@@ -742,7 +791,7 @@ void KviAliasEditor::exportSelectionInSinglesFiles(KviPointerList<KviAliasTreeWi
bool bReplaceAll=false;
- for(KviAliasTreeWidgetItem * it = l->first();it;it = l->next())
+ for(KviAliasEditorTreeWidgetItem * it = l->first();it;it = l->next())
{
QString tmp;
getExportAliasBuffer(tmp,it);
@@ -750,27 +799,22 @@ void KviAliasEditor::exportSelectionInSinglesFiles(KviPointerList<KviAliasTreeWi
szFileName += ".kvs";
szFileName.replace("::","_");
QString szCompletePath=m_szDir+szFileName;
- // debug("saving alias: %s",szCompletePath.toUtf8().data());
- if (KviFileUtils::fileExists(szCompletePath) && !bReplaceAll)
+ if (KviFileUtils::fileExists(szCompletePath) && !bReplaceAll)
{
- QString szMsg;
- KviQString::sprintf(szMsg,__tr2qs_ctx("The file \"%Q\" exists. Do you want to replace it ?","editor"),&szFileName);
- int ret = QMessageBox::question(this,__tr2qs_ctx("Replace file","editor"),szMsg,__tr2qs_ctx("Yes","editor"),__tr2qs_ctx("Yes to All","editor"),__tr2qs_ctx("No","editor"));
- if (ret!=2){
- // debug("overwrite %s",szCompletePath.toUtf8().data());
- KviFileUtils::writeFile(szCompletePath,tmp);
- if (ret==1) bReplaceAll=true;
- }
+ QString szMsg;
+ KviQString::sprintf(szMsg,__tr2qs_ctx("The file \"%Q\" exists. Do you want to replace it ?","editor"),&szFileName);
+ int ret = QMessageBox::question(this,__tr2qs_ctx("Replace file","editor"),szMsg,__tr2qs_ctx("Yes","editor"),__tr2qs_ctx("Yes to All","editor"),__tr2qs_ctx("No","editor"));
+ if (ret!=2)
+ {
+ KviFileUtils::writeFile(szCompletePath,tmp);
+ if (ret==1) bReplaceAll=true;
+ }
}
- else{
-
- // debug("write %s",szCompletePath.toUtf8().data());
- KviFileUtils::writeFile(szCompletePath,tmp);
- }
-
- }
- g_pAliasEditorModule->unlock();
+ else
+ KviFileUtils::writeFile(szCompletePath,tmp);
+ }
+ g_pAliasEditorModule->unlock();
}
@@ -778,7 +822,7 @@ void KviAliasEditor::exportAliases(bool bSelectedOnly,bool bSingleFiles)
{
saveLastEditedItem();
- KviPointerList<KviAliasTreeWidgetItem> l;
+ KviPointerList<KviAliasEditorTreeWidgetItem> l;
l.setAutoDelete(false);
QString out;
@@ -791,8 +835,8 @@ void KviAliasEditor::exportAliases(bool bSelectedOnly,bool bSingleFiles)
}
int count=0;
- KviAliasTreeWidgetItem * tempitem=0;
- for(KviAliasTreeWidgetItem * it = l.first();it;it = l.next())
+ KviAliasEditorTreeWidgetItem * tempitem=0;
+ for(KviAliasEditorTreeWidgetItem * it = l.first();it;it = l.next())
{
tempitem=it;
count ++;
@@ -857,17 +901,17 @@ void KviAliasEditor::loadProperties(KviConfig *cfg)
m_pSplitter->setSizes(cfg->readIntListEntry("Sizes",def));
QString tmp = cfg->readEntry("LastAlias",QString());
- KviAliasEditorTreeWidgetItem * it = findAliasItem(tmp);
- if(!it)it = findNamespaceItem(tmp);
- if(it)activateItem(it);
+ KviAliasEditorTreeWidgetItem * it = findItem(tmp);
+ activateItem(it);
}
-void KviAliasEditor::appendSelectedAliasItems(KviPointerList<KviAliasTreeWidgetItem> * l)
+
+void KviAliasEditor::appendSelectedAliasItems(KviPointerList<KviAliasEditorTreeWidgetItem> * l)
{
QList<QTreeWidgetItem *> list=m_pTreeWidget->selectedItems();
for(int i=0;i<list.count();i++)
{
- if (((KviAliasTreeWidgetItem *)list.at(i))->isAlias())
- l->append((KviAliasTreeWidgetItem *)list.at(i));
+ if (((KviAliasEditorTreeWidgetItem *)list.at(i))->isAlias())
+ l->append((KviAliasEditorTreeWidgetItem *)list.at(i));
else
{
appendSelectedAliasItemsRecursive(l,list.at(i));
@@ -875,24 +919,25 @@ void KviAliasEditor::appendSelectedAliasItems(KviPointerList<KviAliasTreeWidgetI
}
}
-void KviAliasEditor::appendSelectedAliasItemsRecursive(KviPointerList<KviAliasTreeWidgetItem> * l,QTreeWidgetItem * pStartFrom)
+void KviAliasEditor::appendSelectedAliasItemsRecursive(KviPointerList<KviAliasEditorTreeWidgetItem> * l,QTreeWidgetItem * pStartFrom)
{
for (int i=0;i<pStartFrom->childCount();i++)
{
- if (((KviAliasTreeWidgetItem *)pStartFrom->child(i))->isAlias())
- l->append(((KviAliasTreeWidgetItem *)pStartFrom->child(i)));
+ if (((KviAliasEditorTreeWidgetItem *)pStartFrom->child(i))->isAlias())
+ l->append(((KviAliasEditorTreeWidgetItem *)pStartFrom->child(i)));
else
appendSelectedAliasItemsRecursive(l,pStartFrom->child(i));
}
}
-void KviAliasEditor::appendAllAliasItems(KviPointerList<KviAliasTreeWidgetItem> * l)
+
+void KviAliasEditor::appendAllAliasItems(KviPointerList<KviAliasEditorTreeWidgetItem> * l)
{
for (int i=0;i<m_pTreeWidget->topLevelItemCount();i++)
{
- if (((KviAliasTreeWidgetItem *)m_pTreeWidget->topLevelItem(i))->isAlias())
+ if (((KviAliasEditorTreeWidgetItem *)m_pTreeWidget->topLevelItem(i))->isAlias())
{
- l->append(((KviAliasTreeWidgetItem *)m_pTreeWidget->topLevelItem(i)));
+ l->append(((KviAliasEditorTreeWidgetItem *)m_pTreeWidget->topLevelItem(i)));
}
else
{
@@ -902,13 +947,13 @@ void KviAliasEditor::appendAllAliasItems(KviPointerList<KviAliasTreeWidgetItem>
}
-void KviAliasEditor::appendAllAliasItemsRecursive(KviPointerList<KviAliasTreeWidgetItem> * l,QTreeWidgetItem * pStartFrom)
+void KviAliasEditor::appendAllAliasItemsRecursive(KviPointerList<KviAliasEditorTreeWidgetItem> * l,QTreeWidgetItem * pStartFrom)
{
for (int i=0;i<pStartFrom->childCount();i++)
{
- if (((KviAliasTreeWidgetItem *)pStartFrom->child(i))->isAlias())
+ if (((KviAliasEditorTreeWidgetItem *)pStartFrom->child(i))->isAlias())
{
- l->append((KviAliasTreeWidgetItem *)pStartFrom->child(i));
+ l->append((KviAliasEditorTreeWidgetItem *)pStartFrom->child(i));
}
else
{
@@ -917,7 +962,7 @@ void KviAliasEditor::appendAllAliasItemsRecursive(KviPointerList<KviAliasTreeWid
}
}
-
+/*
void KviAliasEditor::appendNamespaceItems(KviPointerList<KviAliasTreeWidgetItem> * l,bool bSelectedOnly)
{
for (int i=0;i<m_pTreeWidget->topLevelItemCount();i++)
@@ -981,7 +1026,7 @@ void KviAliasEditor::appendNamespaceItemsRecursive(KviPointerList<KviAliasTreeWi
}
}
-
+*/
void KviAliasEditor::appendSelectedItemsRecursive(KviPointerList<KviAliasEditorTreeWidgetItem> * l,QTreeWidgetItem *it)
{
@@ -1231,226 +1276,43 @@ void KviAliasEditor::openParentItems(QTreeWidgetItem * it)
void KviAliasEditor::activateItem(QTreeWidgetItem * it)
{
- openParentItems(it);
+ if (!it) return;
+ openParentItems(it);
m_pTreeWidget->setCurrentItem(it);
}
-
void KviAliasEditor::newAlias()
{
- if(m_pLastClickedItem)
- {
- if(!itemExists(m_pLastClickedItem))return; // dead ?
- if(m_pLastClickedItem->isAlias())
- m_pLastClickedItem = m_pLastClickedItem->parentNamespaceItem();
- }
-
- QString szNewName = askForAliasName(__tr2qs_ctx("Add Alias","editor"),__tr2qs_ctx("Please enter the name for the new alias","editor"),"myfunction");
- if(szNewName.isEmpty())return;
-
- getUniqueItemName(m_pLastClickedItem,szNewName,KviAliasEditorTreeWidgetItem::Alias);
-
- KviAliasTreeWidgetItem * it;
-
- if(m_pLastClickedItem)
- it = ((KviAliasNamespaceTreeWidgetItem *)m_pLastClickedItem)->createFullAliasItem(szNewName);
- else
- it = createFullAliasItem(szNewName);
-
- activateItem(it);
+ QString szNewName = askForAliasName(__tr2qs_ctx("Add Alias","editor"),__tr2qs_ctx("Please enter the name for the new alias","editor"),"myfunction");
+ if(szNewName.isEmpty())return;
+ newItem(szNewName,KviAliasEditorTreeWidgetItem::Alias);
}
-void KviAliasEditor::newNamespace()
+void KviAliasEditor::newItem(QString &szName,KviAliasEditorTreeWidgetItem::Type eType)
{
if(m_pLastClickedItem)
- {
- if(!itemExists(m_pLastClickedItem))return; // dead ?
- if(m_pLastClickedItem->isAlias())
- m_pLastClickedItem = m_pLastClickedItem->parentNamespaceItem();
- }
-
-
- QString szNewName = askForNamespaceName(__tr2qs_ctx("Add Namespace","editor"),__tr2qs_ctx("Please enter the name for the new namespace","editor"),"mynamespace");
- if(szNewName.isEmpty())return;
-
- getUniqueItemName(m_pLastClickedItem,szNewName,KviAliasEditorTreeWidgetItem::Namespace);
-
- KviAliasNamespaceTreeWidgetItem * it;
-
- if(m_pLastClickedItem)
- it = ((KviAliasNamespaceTreeWidgetItem *)m_pLastClickedItem)->createFullNamespaceItem(szNewName);
- else
- it = createFullNamespaceItem(szNewName);
-
+ if(!itemExists(m_pLastClickedItem)) m_pLastClickedItem=0;
+ if(m_pLastClickedItem) buildFullItemPath(m_pLastClickedItem,szName);
+ int idx=1;
+ QString szTmp;
+ if(findItem(szName)) szName.append("1");
+ while(findItem(szName))
+ {
+ szTmp.setNum(idx);
+ szName.chop(szTmp.length());
+ szName.append(szTmp);
+ idx++;
+ }
+ KviAliasEditorTreeWidgetItem * it;
+ it=createFullItem(szName);
+ it->setType(eType);
activateItem(it);
}
-bool KviAliasEditor::aliasExists(QString &szFullItemName)
-{
- KviPointerList<KviAliasTreeWidgetItem> l;
- l.setAutoDelete(false);
-
- appendAllAliasItems(&l);
- for(KviAliasTreeWidgetItem * it = l.first();it;it = l.next())
- {
- if (KviQString::equalCI(buildFullItemName(it),szFullItemName))
- {
- return true;
- }
- }
- return false;
-}
-
-bool KviAliasEditor::namespaceExists(QString &szFullItemName)
-{
- KviPointerList<KviAliasTreeWidgetItem> l;
- l.setAutoDelete(false);
-
- appendNamespaceItems(&l,false);
- for(KviAliasTreeWidgetItem * it = l.first();it;it = l.next())
- {
- if (KviQString::equalCI(buildFullItemName(it),szFullItemName))
- {
- return true;
- }
- }
- return false;
-}
-
-void KviAliasEditor::renameItem()
-{
- if(!m_pLastEditedItem)return;
- if(!itemExists(m_pLastEditedItem))return; // dead ?
-
- QString szName = buildFullItemName(m_pLastEditedItem);
- QString szNewName;
-
- bool bAlias = m_pLastEditedItem->isAlias();
-
- if(bAlias)
- szNewName = askForAliasName(__tr2qs_ctx("Rename Alias","editor"),__tr2qs_ctx("Please enter the new name for the alias","editor"),szName);
- else
- szNewName = askForNamespaceName(__tr2qs_ctx("Rename Namespace","editor"),__tr2qs_ctx("Please enter the new name for the namespace","editor"),szName);
- if(szNewName.isEmpty())return;
-
- if(szName == szNewName)return;
-
- // check if there is already an alias with this name
- if (bAlias)
- {
- if (aliasExists(szNewName))
- {
- g_pAliasEditorModule->lock();
- QMessageBox::information(this,
- __tr2qs_ctx("Alias already exists","editor"),
- __tr2qs_ctx("This name is already in use. Please choose another one.","editor"),
- __tr2qs_ctx("Ok, Let me try again...","editor"));
- g_pAliasEditorModule->unlock();
- return;
- }
- } else {
- // check if there is already a namespace with this name
- if (namespaceExists(szNewName))
- {
- g_pAliasEditorModule->lock();
- QMessageBox::information(this,
- __tr2qs_ctx("Namespace already exists","editor"),
- __tr2qs_ctx("This name is already in use. Please choose another one.","editor"),
- __tr2qs_ctx("Ok, Let me try again...","editor"));
- g_pAliasEditorModule->unlock();
- return;
- }
- }
-
- QString szCode;
- int pntCursor;
- if(bAlias)
- {
- m_pEditor->getText(szCode);
- pntCursor = m_pEditor->getCursor();
- }
- QList<QTreeWidgetItem*> lChildren= m_pLastEditedItem->takeChildren();
- bool bYesToAll = true;
- removeItem(m_pLastEditedItem,&bYesToAll,true);
-
- m_pLastEditedItem = 0; // make sure it's true (but it already should be because of removeItem())
- m_pLastClickedItem = 0; // make sure it's true (but it already should be because of removeItem())
-
- if(bAlias)
- {
- KviAliasTreeWidgetItem * ait = createFullAliasItem(szNewName);
- ait->setBuffer(szCode);
- ait->setCursorPosition(pntCursor);
- activateItem(ait);
-
- } else {
- KviAliasNamespaceTreeWidgetItem * nit = createFullNamespaceItem(szNewName);
- activateItem(nit);
-
- for(int i=0;i<lChildren.count();i++)
- {
- ((KviAliasEditorTreeWidgetItem*)lChildren.at(i))->setParentNamespaceItem(nit);
- nit->insertChild(nit->childCount(),lChildren.at(i));
- }
-
- }
-}
-
-// warning: this saves ONLY the body, not the name!
-// the name is changed explicitly with renameItem(), when needed
-void KviAliasEditor::saveLastEditedItem()
-{
- if(!m_pLastEditedItem)
- return;
- if(!itemExists(m_pLastEditedItem) || !m_pEditor->isModified() || m_pLastEditedItem->isNamespace())
- return;
-
- ((KviAliasTreeWidgetItem *)m_pLastEditedItem)->setCursorPosition(m_pEditor->getCursor());
- QString newCode;
- m_pEditor->getText(newCode);
- ((KviAliasTreeWidgetItem *)m_pLastEditedItem)->setBuffer(newCode);
-}
-
-void KviAliasEditor::currentItemChanged(QTreeWidgetItem *it,QTreeWidgetItem *)
+void KviAliasEditor::newNamespace()
{
- saveLastEditedItem();
- m_pLastEditedItem = (KviAliasEditorTreeWidgetItem *)it;
-
- if(!m_pLastEditedItem)
- {
- m_pNameLabel->setText(__tr2qs_ctx("No item selected","editor"));
- m_pRenameButton->setEnabled(false);
- m_pEditor->setText("");
- m_pEditor->setEnabled(false);
- return;
- }
-
- QString szNam = buildFullItemName(m_pLastEditedItem);
- if(m_pLastEditedItem->isNamespace())
- {
- QString szLabelText = __tr2qs_ctx("Namespace","editor");
- szLabelText += ": <b>";
- szLabelText += szNam;
- szLabelText += "</b>";
- m_pNameLabel->setText(szLabelText);
- m_pRenameButton->setEnabled(true);
- m_pEditor->setText("");
- m_pEditor->setEnabled(false);
- m_pTreeWidget->setFocus();
- return;
- }
-
- QString szLabelText = __tr2qs_ctx("Alias","editor");
- szLabelText += ": <b>";
- szLabelText += szNam;
- szLabelText += "</b>";
- m_pNameLabel->setText(szLabelText);
- m_pRenameButton->setEnabled(true);
- m_pEditor->setText(((KviAliasTreeWidgetItem *)it)->buffer());
-
- m_pEditor->setFocus();
- m_pEditor->setCursorPosition(((KviAliasTreeWidgetItem *)it)->cursorPosition());
- m_pEditor->setEnabled(true);
-
+ QString szName = askForNamespaceName(__tr2qs_ctx("Add Namespace","editor"),__tr2qs_ctx("Please enter the name for the new namespace","editor"),"mynamespace");
+ if(szName.isEmpty())return;
+ newItem(szName,KviAliasEditorTreeWidgetItem::Namespace);
}
void KviAliasEditor::recursiveCommit(KviAliasEditorTreeWidgetItem * it)
@@ -1459,13 +1321,13 @@ void KviAliasEditor::recursiveCommit(KviAliasEditorTreeWidgetItem * it)
return;
if(it->isAlias())
{
- QString szName = buildFullItemName(it);
-// debug("Commit alias %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,((KviAliasTreeWidgetItem *)it)->buffer());
- KviKvsAliasManager::instance()->add(szName,a);
+ QString szName = buildFullItemName(it);
+// debug("Commit alias %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,((KviAliasEditorTreeWidgetItem *)it)->buffer());
+ KviKvsAliasManager::instance()->add(szName,a);
return;
}
@@ -1490,52 +1352,6 @@ void KviAliasEditor::commit()
m_bSaving = false;
}
-void KviAliasEditor::getUniqueItemName(KviAliasEditorTreeWidgetItem *item,QString &buffer,KviAliasEditorTreeWidgetItem::Type eType)
-{
- QString ret;
-
- int idx = 0;
- KviAliasEditorTreeWidgetItem * found;
-
- for(;;)
- {
- ret = buffer;
- if(idx > 0)
- {
- QString tmp;
- tmp.setNum(idx);
- ret.append(tmp);
- }
-
- if(item)
- {
- if(!item->isNamespace())
- {
- buffer = ret;
- return;
- }
-
- if(eType == KviAliasEditorTreeWidgetItem::Namespace)
- found = ((KviAliasNamespaceTreeWidgetItem *)item)->findNamespaceItem(ret);
- else
- found = ((KviAliasNamespaceTreeWidgetItem *)item)->findAliasItem(ret);
- } else {
- if(eType == KviAliasEditorTreeWidgetItem::Namespace)
- found = findNamespaceItem(ret);
- else
- found = findAliasItem(ret);
- }
-
- if(!found)
- {
- buffer = ret;
- return;
- }
-
- idx++;
- }
-}
-
KviAliasEditorWindow::KviAliasEditorWindow(KviFrame * lpFrm)
: KviWindow(KVI_WINDOW_TYPE_SCRIPTEDITOR,lpFrm,"aliaseditor",0)
@@ -1607,5 +1423,5 @@ void KviAliasEditorWindow::saveProperties(KviConfig *cfg)
void KviAliasEditorWindow::loadProperties(KviConfig *cfg)
{
- m_pEditor->loadProperties(cfg);
+ m_pEditor->loadProperties(cfg);
}
diff --git a/src/modules/aliaseditor/aliaseditor.h b/src/modules/aliaseditor/aliaseditor.h
index 3b2ca1f32..a2473fe40 100644
--- a/src/modules/aliaseditor/aliaseditor.h
+++ b/src/modules/aliaseditor/aliaseditor.h
@@ -39,8 +39,6 @@
class QSplitter;
class KviScriptEditor;
-class KviAliasNamespaceTreeWidgetItem;
-class KviAliasTreeWidgetItem;
class KviAliasEditorTreeWidgetItem : public QTreeWidgetItem, public KviHeapObject
{
@@ -48,39 +46,32 @@ public:
enum Type { Alias, Namespace };
public:
KviAliasEditorTreeWidgetItem(QTreeWidget * pTreeWidget,Type eType,const QString &szName);
- KviAliasEditorTreeWidgetItem(KviAliasNamespaceTreeWidgetItem * pParentNamespaceItem,Type eType,const QString &szName);
+ KviAliasEditorTreeWidgetItem(KviAliasEditorTreeWidgetItem * pParentItem,Type eType,const QString &szName);
~KviAliasEditorTreeWidgetItem(){};
protected:
Type m_eType;
- KviAliasNamespaceTreeWidgetItem * m_pParentNamespaceItem;
+ KviAliasEditorTreeWidgetItem * m_pParentItem;
QString m_szName;
+ QString m_szBuffer;
+ int m_cPos;
public:
const QString & name(){ return m_szName; };
void setName(const QString &szName);
Type type(){ return m_eType; };
+ void setType(Type t);
bool isAlias(){ return m_eType == Alias; };
bool isNamespace(){ return m_eType == Namespace; };
- void setParentNamespaceItem(KviAliasNamespaceTreeWidgetItem* it){ m_pParentNamespaceItem=it; };
- KviAliasNamespaceTreeWidgetItem * parentNamespaceItem(){ return m_pParentNamespaceItem; };
-};
-
+ void setParentItem(KviAliasEditorTreeWidgetItem* it){ m_pParentItem=it; };
+ KviAliasEditorTreeWidgetItem * parentItem(){ return m_pParentItem; };
+ void setBuffer(const QString &szBuffer){ m_szBuffer = szBuffer; };
+ const QString & buffer(){ return m_szBuffer; };
+ const int & cursorPosition(){return m_cPos; };
-class KviAliasNamespaceTreeWidgetItem : public KviAliasEditorTreeWidgetItem
-{
-public:
- KviAliasNamespaceTreeWidgetItem(QTreeWidget * pTreeWidget,const QString &szName);
- KviAliasNamespaceTreeWidgetItem(KviAliasNamespaceTreeWidgetItem * pParentNamespace,const QString &szName);
- ~KviAliasNamespaceTreeWidgetItem();
-public:
- KviAliasNamespaceTreeWidgetItem * findNamespaceItem(const QString &szName);
- KviAliasNamespaceTreeWidgetItem * getNamespaceItem(const QString &szName);
- KviAliasTreeWidgetItem * findAliasItem(const QString &szName);
- KviAliasTreeWidgetItem * getAliasItem(const QString &szName);
- KviAliasTreeWidgetItem * createFullAliasItem(const QString &szFullName);
- KviAliasNamespaceTreeWidgetItem * createFullNamespaceItem(const QString &szFullName);
+ void setCursorPosition(const int &cPos){ m_cPos = cPos; };
};
+
class KviAliasEditorTreeWidget : public QTreeWidget
{
Q_OBJECT
@@ -95,22 +86,6 @@ signals:
};
-class KviAliasTreeWidgetItem : public KviAliasEditorTreeWidgetItem
-{
-public:
- KviAliasTreeWidgetItem(KviAliasNamespaceTreeWidgetItem * pParentNamespace,const QString &szName);
- KviAliasTreeWidgetItem(QTreeWidget *pTreeWidget,const QString &szName);
- ~KviAliasTreeWidgetItem();
-public:
- QString m_szBuffer;
- int m_cPos;
-public:
- const QString & buffer(){ return m_szBuffer; };
- const int & cursorPosition(){return m_cPos; };
- void setBuffer(const QString &szBuffer){ m_szBuffer = szBuffer; };
- void setCursorPosition(const int &cPos){ m_cPos = cPos; };
-};
-
class KviAliasEditor : public QWidget
{
Q_OBJECT
@@ -124,76 +99,94 @@ public:
QPushButton * m_pRenameButton;
KviAliasEditorTreeWidgetItem * m_pLastEditedItem;
KviAliasEditorTreeWidgetItem * m_pLastClickedItem;
- //KviAliasTreeWidgetItem * m_pLastEditedItem;
KviTalPopupMenu * m_pContextPopup;
QSplitter * m_pSplitter;
QString m_szDir;
bool m_bSaving;
public:
//bool modified(){ return m_bModified; };
- void commit();
- void exportAliases(bool,bool=false);
- void exportSelectionInSinglesFiles(KviPointerList<KviAliasTreeWidgetItem> *l);
+ void commit();
+ void exportAliases(bool,bool=false);
+ void exportSelectionInSinglesFiles(KviPointerList<KviAliasEditorTreeWidgetItem> *l);
- void saveProperties(KviConfig *);
- void loadProperties(KviConfig *);
+ void saveProperties(KviConfig *);
+ void loadProperties(KviConfig *);
static void splitFullAliasOrNamespaceName(const QString &szFullName,QStringList &lNamespaces,QString &szName);
protected slots:
- void currentItemChanged(QTreeWidgetItem *it,QTreeWidgetItem *);
- void newAlias();
- void newNamespace();
+ void currentItemChanged(QTreeWidgetItem *it,QTreeWidgetItem *);
+ void renameItem();
+ void newAlias();
+ void itemPressed(QTreeWidgetItem *,QPoint);
+void newNamespace();
+void newItem(QString &szName,KviAliasEditorTreeWidgetItem::Type eType);
+
+
void exportAll();
void exportSelectedSepFiles();
void exportSelected();
- void removeSelectedItems();
- void itemPressed(QTreeWidgetItem *,QPoint);
- void renameItem();
+ void removeSelectedItems();
+
+
+
void slotFind();
void slotCollapseNamespaces();
void slotFindWord(const QString &);
void slotReplaceAll(const QString &before,const QString &after);
void itemRenamed(QTreeWidgetItem *it,int col);
void aliasRefresh(const QString &szName);
+
protected:
- void recursiveCollapseNamespaces(KviAliasEditorTreeWidgetItem * it);
+ void recursiveCollapseNamespaces(KviAliasEditorTreeWidgetItem * it);
void recursiveSearchReplace(const QString &szSearch,KviAliasEditorTreeWidgetItem * it,bool bReplace=false,const QString &szReplace="n");
void recursiveCommit(KviAliasEditorTreeWidgetItem * it);
- void getExportAliasBuffer(QString &buffer,KviAliasTreeWidgetItem * it);
+ void getExportAliasBuffer(QString &buffer,KviAliasEditorTreeWidgetItem * it);
void oneTimeSetup();
void saveLastEditedItem();
void getUniqueItemName(KviAliasEditorTreeWidgetItem *item,QString &buffer,KviAliasEditorTreeWidgetItem::Type eType);
void appendSelectedItems(KviPointerList<KviAliasEditorTreeWidgetItem> * l);
- void appendSelectedAliasItems(KviPointerList<KviAliasTreeWidgetItem> * l);
- void appendSelectedAliasItemsRecursive(KviPointerList<KviAliasTreeWidgetItem> * l,QTreeWidgetItem * pStartFrom);
- void appendSelectedItemsRecursive(KviPointerList<KviAliasEditorTreeWidgetItem> * l,QTreeWidgetItem *it);
+ void appendSelectedAliasItems(KviPointerList<KviAliasEditorTreeWidgetItem> * l);
+ void appendSelectedAliasItemsRecursive(KviPointerList<KviAliasEditorTreeWidgetItem> * l,QTreeWidgetItem * pStartFrom);
+ void appendAllAliasItems(KviPointerList<KviAliasEditorTreeWidgetItem> * l);
+ void appendAllAliasItemsRecursive(KviPointerList<KviAliasEditorTreeWidgetItem> * l,QTreeWidgetItem * pStartFrom);
- void appendAllAliasItems(KviPointerList<KviAliasTreeWidgetItem> * l);
- void appendAllAliasItemsRecursive(KviPointerList<KviAliasTreeWidgetItem> * l,QTreeWidgetItem * pStartFrom);
- void appendNamespaceItemsRecursive(KviPointerList<KviAliasTreeWidgetItem> * l,QTreeWidgetItem * pStartFrom,bool bSelectedOnly);
+ void appendSelectedItemsRecursive(KviPointerList<KviAliasEditorTreeWidgetItem> * l,QTreeWidgetItem *it);
+/*
+ void appendNamespaceItemsRecursive(KviPointerList<KviAliasTreeWidgetItem> * l,QTreeWidgetItem * pStartFrom,bool bSelectedOnly);
void appendNamespaceItems(KviPointerList<KviAliasTreeWidgetItem> * l,bool bSelectedOnly);
//void appendNamespaceItems(KviPointerList<KviAliasTreeWidgetItem> * l,KviAliasEditorTreeWidgetItem * pStartFrom,bool bSelectedOnly);
- bool removeItem(KviAliasEditorTreeWidgetItem *it,bool * pbYesToAll,bool bDeleteEmptyTree);
- void removeItemChildren(KviAliasEditorTreeWidgetItem *it);
-
+*/
void openParentItems(QTreeWidgetItem * it);
void activateItem(QTreeWidgetItem * it);
- QString askForAliasName(const QString &szAction,const QString &szText,const QString &szInitialText);
+
+ bool removeItem(KviAliasEditorTreeWidgetItem *it,bool * pbYesToAll,bool bDeleteEmptyTree);
+ void removeItemChildren(KviAliasEditorTreeWidgetItem *it);
+
+ QString askForAliasName(const QString &szAction,const QString &szText,const QString &szInitialText);
QString askForNamespaceName(const QString &szAction,const QString &szText,const QString &szInitialText);
+
bool itemExistsRecursive(QTreeWidgetItem *pSearchFor,QTreeWidgetItem * pSearchAt);
bool itemExists(QTreeWidgetItem *pSearchFor);
- bool namespaceExists(QString &szFullItemName);
+ bool namespaceExists(QString &szFullItemName);
bool aliasExists(QString &szFullItemName);
- bool hasSelectedItems();
- bool hasSelectedItemsRecursive(QTreeWidgetItem *);
- KviAliasNamespaceTreeWidgetItem * findNamespaceItem(const QString &szName);
+ void appendAllItems(KviPointerList<KviAliasEditorTreeWidgetItem> * l,KviAliasEditorTreeWidgetItem::Type);
+ void appendAllItemsRecursive(KviPointerList<KviAliasEditorTreeWidgetItem> * l,QTreeWidgetItem * pStartFrom,KviAliasEditorTreeWidgetItem::Type);
+ bool hasSelectedItems();
+ /*bool hasSelectedItemsRecursive(QTreeWidgetItem *);
+ KviAliasNamespaceTreeWidgetItem * findNamespaceItem(const QString &szName);
KviAliasNamespaceTreeWidgetItem * getNamespaceItem(const QString &szName);
KviAliasTreeWidgetItem * findAliasItem(const QString &szName);
KviAliasTreeWidgetItem * findAliasItemRecursive(KviAliasEditorTreeWidgetItem *it,const QString &szName);
KviAliasTreeWidgetItem * getAliasItem(const QString &szName);
- KviAliasTreeWidgetItem * createFullAliasItem(const QString &szFullName);
- KviAliasNamespaceTreeWidgetItem * createFullNamespaceItem(const QString &szFullName);
+ KviAliasTreeWidgetItem * createFullAliasItem(const QString &szFullName);*/
+
+ void buildFullItemPath(KviAliasEditorTreeWidgetItem * it,QString &szBuffer);
+ KviAliasEditorTreeWidgetItem * findTopLevelItem(const QString &szName);
+ KviAliasEditorTreeWidgetItem * createFullItem(const QString &szFullName);
+ KviAliasEditorTreeWidgetItem * findItem(const QString &szName);
+ KviAliasEditorTreeWidgetItem * createFullItemRecursive(QTreeWidgetItem *pCurrent,QStringList & lNameSpaces,int & iLevel);
+ KviAliasEditorTreeWidgetItem * findItemRecursive(QTreeWidgetItem *it,QStringList & lNameSpaces,int & iLevel);
QString buildFullItemName(KviAliasEditorTreeWidgetItem * it);
};