From a6d58bb6052ac8cb01805a48c4ad2f129126116f Mon Sep 17 00:00:00 2001 From: tpearson Date: Wed, 24 Feb 2010 02:13:59 +0000 Subject: Added KDE3 version of kvirc git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kvirc@1095341 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- src/modules/options/mkcreateinstanceproc.sh | 441 ++++++++++++++++++++++++++++ 1 file changed, 441 insertions(+) create mode 100755 src/modules/options/mkcreateinstanceproc.sh (limited to 'src/modules/options/mkcreateinstanceproc.sh') diff --git a/src/modules/options/mkcreateinstanceproc.sh b/src/modules/options/mkcreateinstanceproc.sh new file mode 100755 index 0000000..97be80b --- /dev/null +++ b/src/modules/options/mkcreateinstanceproc.sh @@ -0,0 +1,441 @@ +#!/bin/sh + +##################################################################################################### +# +# Generator for instances.h and instances.cpp +# +# This file is part of the KVirc irc client distribution +# Copyright (C) 2001-2006 Szymon Stefanek (pragma at kvirc dot net) +# +##################################################################################################### + + +echo "" > instances.h + +###################################################################################################### +cat >> instances.h < * pChildList; + bool bDoInsert; // a helper for KviOptionsDialog::fillListView() +} KviOptionsWidgetInstanceEntry; + + +class KviOptionsInstanceManager : public QObject +{ + Q_OBJECT +public: + KviOptionsInstanceManager(); + virtual ~KviOptionsInstanceManager(); +protected: + KviPointerList * m_pInstanceTree; +public: + KviPointerList * instanceEntryTree(){ return m_pInstanceTree; }; + KviOptionsWidget * getInstance(KviOptionsWidgetInstanceEntry * e,QWidget * par); + KviOptionsWidgetInstanceEntry * findInstanceEntry(const char * clName); + void cleanup(KviModule * m); +protected: + KviOptionsWidgetInstanceEntry * findInstanceEntry(const char * clName,KviPointerList * l); + KviOptionsWidgetInstanceEntry * findInstanceEntry(const QObject * ptr,KviPointerList * l); + void deleteInstanceTree(KviPointerList * l); +protected slots: + void widgetDestroyed(); +}; + +#endif //__OPTIONS_INSTANCES_H__ + +EOF +###################################################################################################### + +CLASS_LIST=`grep -h "[ ]*\:[ ]*public[ ]*KviOptionsWidget" optw_*.h | sed -e 's/[ ]*\:[ ]*public[ ]*KviOptionsWidget'//g | sed -e 's/[ ]*class[ ]*//g'` + + +TARGET="instances.cpp" + +echo "" > $TARGET + +###################################################################################################### +cat >> instances.cpp <> $TARGET +done + +###################################################################################################### +cat >> instances.cpp <> $TARGET + echo "_createInstanceProc(QWidget * parent)" >> $TARGET + echo "{" >> $TARGET + echo " return new $aclass(parent);" >> $TARGET + echo "}" >> $TARGET + echo "" >> $TARGET +done + +###################################################################################################### +cat >> instances.cpp <> $TARGET + echo "static const char * g_szClassName_$aclass = \"$aclass\";" >> $TARGET +done + +###################################################################################################### +cat >> instances.cpp <; + m_pInstanceTree->setAutoDelete(true); + +EOF +###################################################################################################### + +CLASSDIR=".classtmp" + +mkdir -p $CLASSDIR + +rm -f $CLASSDIR/* + +for aclass in $CLASS_LIST; do + PARENT=`grep -h "KVI_OPTIONS_WIDGET_PARENT_$aclass" optw_*.h | sed -e 's/#define//g' | sed -e s/KVI_OPTIONS_WIDGET_PARENT_$aclass//g | sed -e 's/[ ]*//g'` + if [ -z "$PARENT" ]; then + PARENT="NOPARENT" + fi + echo $aclass >> $CLASSDIR/$PARENT +done + +SPACES="" + +printclass() +{ + echo "" >> $TARGET + found= + for anum in $DECLARED; do + if [ "$anum" = "$1" ]; then + found="yes" + break + fi + done + if [ -z "$found" ]; then + echo "$3 KviOptionsWidgetInstanceEntry * e$1;" >> $TARGET + DECLARED="$DECLARED $1" + fi + echo "$3 e$1 = new KviOptionsWidgetInstanceEntry;" >> $TARGET + echo -n "$3 e$1->createProc = &class$2" >> $TARGET + echo "_createInstanceProc;" >> $TARGET + echo "$3 e$1->pWidget = 0;" >> $TARGET + echo "$3 e$1->szClassName = g_szClassName_$2;" >> $TARGET + echo "$3 e$1->iIcon = KVI_OPTIONS_WIDGET_ICON_$2;" >> $TARGET + + echo "$3 #ifdef KVI_OPTIONS_WIDGET_PRIORITY_$2" >> $TARGET + echo "$3 e$1->iPriority = KVI_OPTIONS_WIDGET_PRIORITY_$2;" >> $TARGET + echo "$3 #else" >> $TARGET + echo "$3 e$1->iPriority = 0;" >> $TARGET + echo "$3 #endif" >> $TARGET + + echo "$3 #ifdef KVI_OPTIONS_WIDGET_KEYWORDS_$2" >> $TARGET + echo "$3 e$1->szKeywordsNoLocale = KVI_OPTIONS_WIDGET_KEYWORDS_$2;" >> $TARGET + echo "$3 e$1->szKeywords = __tr2qs_ctx_no_xgettext(e$1->szKeywordsNoLocale,\"options\");;" >> $TARGET + echo "$3 #endif" >> $TARGET + + echo "$3 #ifdef KVI_OPTIONS_WIDGET_GROUP_$2" >> $TARGET + echo "$3 e$1->szGroup = KVI_OPTIONS_WIDGET_GROUP_$2;" >> $TARGET + echo "$3 #else" >> $TARGET + echo "$3 e$1->szGroup = \"general\";" >> $TARGET + echo "$3 #endif" >> $TARGET + + echo "$3 #ifdef KVI_OPTIONS_WIDGET_CONTAINER_$2" >> $TARGET + echo "$3 e$1->bIsContainer = KVI_OPTIONS_WIDGET_CONTAINER_$2;" >> $TARGET + echo "$3 #else" >> $TARGET + echo "$3 e$1->bIsContainer = false;" >> $TARGET + echo "$3 #endif" >> $TARGET + + echo "$3 #ifdef KVI_OPTIONS_WIDGET_NOTCONTAINED_$2" >> $TARGET + echo "$3 e$1->bIsNotContained = KVI_OPTIONS_WIDGET_NOTCONTAINED_$2;" >> $TARGET + echo "$3 #else" >> $TARGET + echo "$3 e$1->bIsNotContained = false;" >> $TARGET + echo "$3 #endif" >> $TARGET + + echo "$3 e$1->szNameNoLocale = g_szName_$2;" >> $TARGET + echo "$3 e$1->szName = __tr2qs_ctx_no_xgettext(g_szName_$2,\"options\");" >> $TARGET + + if [ "$1" = "0" ]; then + echo "$3 m_pInstanceTree->append(e$1);" >> $TARGET + else + VAL=`expr $1 - 1` + echo "$3 e$VAL->pChildList->append(e$1);" >> $TARGET + fi +} + +addchildren() +{ + if [ -f "$CLASSDIR/$2" ]; then + LEVEL=`cat $CLASSDIR/$2` + for achild in $LEVEL; do + printclass $1 $achild "$3" + if [ -f "$CLASSDIR/$achild" ]; then + echo "" >> $TARGET + echo "$3 e$1->pChildList = new KviPointerList;" >> $TARGET + echo "$3 e$1->pChildList->setAutoDelete(true);" >> $TARGET + NEXTLEVEL=`expr $1 + 1` + addchildren $NEXTLEVEL $achild "$3 " + else + echo "$3 e$1->pChildList = 0;" >> $TARGET + fi + done + fi +} + +addchildren 0 NOPARENT "" + + +rm -fr $CLASSDIR + +###################################################################################################### +cat >> $TARGET < * l) +{ + if(l) + { + for(KviOptionsWidgetInstanceEntry * e = l->first();e;e = l->next()) + { + if(e->pWidget) + { + if(e->pWidget->parent()->inherits("KviOptionsWidgetContainer")) + { + disconnect(e->pWidget,SIGNAL(destroyed()),this,SLOT(widgetDestroyed())); + delete e->pWidget->parent(); + e->pWidget = 0; + } else { + debug("Ops...i have deleted the options dialog ?"); + } + } //else debug("Clas %s has no widget",e->szName); + if(e->pChildList)deleteInstanceTree(e->pChildList); + } + delete l; + } +} + + +KviOptionsInstanceManager::~KviOptionsInstanceManager() +{ + if(m_pInstanceTree)debug("Ops...KviOptionsInstanceManager::cleanup() not called ?"); +} + +void KviOptionsInstanceManager::cleanup(KviModule * m) +{ + deleteInstanceTree(m_pInstanceTree); + m_pInstanceTree = 0; +} + +void KviOptionsInstanceManager::widgetDestroyed() +{ + KviOptionsWidgetInstanceEntry * e = findInstanceEntry(sender(),m_pInstanceTree); + if(e)e->pWidget = 0; + if(g_iOptionWidgetInstances > 0)g_iOptionWidgetInstances--; + +} + +KviOptionsWidget * KviOptionsInstanceManager::getInstance(KviOptionsWidgetInstanceEntry * e,QWidget * par) +{ + if(!e)return 0; + if(!(e->pWidget)) + { + e->pWidget = e->createProc(par); + g_iOptionWidgetInstances++; + connect(e->pWidget,SIGNAL(destroyed()),this,SLOT(widgetDestroyed())); + } + if(e->pWidget->parent() != par) + { + QWidget * oldPar = (QWidget *)e->pWidget->parent(); + e->pWidget->reparent(par,QPoint(0,0)); + delete oldPar; + } + if(e->bIsContainer) + { + // need to create the container structure! + e->pWidget->createTabbedPage(); + if(e->pChildList) + { + KviPointerList tmp; + tmp.setAutoDelete(false); + + for(KviOptionsWidgetInstanceEntry * e2 = e->pChildList->first();e2;e2 = e->pChildList->next()) + { + // add only non containers and widgets not explicitly marked as noncontained + if((!e2->bIsContainer) && (!e2->bIsNotContained)) + { + KviOptionsWidgetInstanceEntry * ee = tmp.first(); + int idx = 0; + while(ee) + { + if(ee->iPriority >= e2->iPriority)break; + idx++; + ee = tmp.next(); + } + tmp.insert(idx,e2); + } + } + + for(KviOptionsWidgetInstanceEntry * e3 = tmp.last();e3;e3 = tmp.prev()) + { + KviOptionsWidget * ow = getInstance(e3,e->pWidget->tabWidget()); + e->pWidget->addOptionsWidget(e3->szName,*(g_pIconManager->getSmallIcon(e3->iIcon)),ow); + } + } + } + return e->pWidget; +} + +KviOptionsWidgetInstanceEntry * KviOptionsInstanceManager::findInstanceEntry(const QObject * ptr,KviPointerList * l) +{ + if(l) + { + for(KviOptionsWidgetInstanceEntry * e = l->first();e;e = l->next()) + { + if(ptr == e->pWidget)return e; + if(e->pChildList) + { + KviOptionsWidgetInstanceEntry * e2 = findInstanceEntry(ptr,e->pChildList); + if(e2)return e2; + } + } + } + return 0; +} + +KviOptionsWidgetInstanceEntry * KviOptionsInstanceManager::findInstanceEntry(const char * clName,KviPointerList * l) +{ + if(l) + { + for(KviOptionsWidgetInstanceEntry * e = l->first();e;e = l->next()) + { + if(kvi_strEqualCI(e->szClassName,clName))return e; + if(e->pChildList) + { + KviOptionsWidgetInstanceEntry * e2 = findInstanceEntry(clName,e->pChildList); + if(e2)return e2; + } + } + } + return 0; +} + +KviOptionsWidgetInstanceEntry * KviOptionsInstanceManager::findInstanceEntry(const char * clName) +{ + return findInstanceEntry(clName,m_pInstanceTree); +} + + +#include "m_instances.moc" + +EOF +###################################################################################################### + -- cgit v1.2.3