📄 metadatabase.cpp
字号:
{ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return QValueList<Connection>(); } QValueList<Connection>::Iterator it = r->connections.begin(); QValueList<Connection> ret; QValueList<Connection>::Iterator conn; while ( ( conn = it ) != r->connections.end() ) { ++it; if ( (*conn).sender == object || (*conn).receiver == object ) ret << *conn; } return ret;}void MetaDataBase::doConnections( QObject *o ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return; } QObject *sender = 0, *receiver = 0; QObjectList *l = 0; QValueList<Connection>::Iterator it = r->connections.begin(); for ( ; it != r->connections.end(); ++it ) { Connection conn = *it; if ( qstrcmp( conn.sender->name(), o->name() ) == 0 ) { sender = o; } else { l = o->queryList( 0, conn.sender->name(), FALSE ); if ( !l || !l->first() ) { delete l; continue; } sender = l->first(); delete l; } if ( qstrcmp( conn.receiver->name(), o->name() ) == 0 ) { receiver = o; } else { l = o->queryList( 0, conn.receiver->name(), FALSE ); if ( !l || !l->first() ) { delete l; continue; } receiver = l->first(); delete l; } QString s = "2""%1"; s = s.arg( conn.signal ); QString s2 = "1""%1"; s2 = s2.arg( conn.slot ); QStrList signalList = sender->metaObject()->signalNames( TRUE ); QStrList slotList = receiver->metaObject()->slotNames( TRUE ); // avoid warnings if ( signalList.find( conn.signal ) == -1 || slotList.find( conn.slot ) == -1 ) continue; QObject::connect( sender, s, receiver, s2 ); }}bool MetaDataBase::hasSlot( QObject *o, const QCString &slot, bool onlyCustom ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return FALSE; } if ( !onlyCustom ) { QStrList slotList = o->metaObject()->slotNames( TRUE ); if ( slotList.find( slot ) != -1 ) return TRUE; if ( o->inherits( "FormWindow" ) ) { o = ( (FormWindow*)o )->mainContainer(); slotList = o->metaObject()->slotNames( TRUE ); if ( slotList.find( slot ) != -1 ) return TRUE; } if ( o->inherits( "CustomWidget" ) ) { MetaDataBase::CustomWidget *w = ( (::CustomWidget*)o )->customWidget(); for ( QValueList<Function>::Iterator it = w->lstSlots.begin(); it != w->lstSlots.end(); ++it ) { QCString s = (*it).function; if ( !s.data() ) continue; if ( s == slot ) return TRUE; } } } for ( QValueList<Function>::Iterator it = r->functionList.begin(); it != r->functionList.end(); ++it ) { Function f = *it; if ( normalizeFunction( f.function ) == normalizeFunction( slot ) && f.type == "slot" ) return TRUE; } return FALSE;}bool MetaDataBase::isSlotUsed( QObject *o, const QCString &slot ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return FALSE; } QValueList<Connection> conns = connections( o ); for ( QValueList<Connection>::Iterator it = conns.begin(); it != conns.end(); ++it ) { if ( (*it).slot == slot ) return TRUE; } return FALSE;}void MetaDataBase::addFunction( QObject *o, const QCString &function, const QString &specifier, const QString &access, const QString &type, const QString &language, const QString &returnType ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return; } Function f; f.function = function; f.specifier = specifier; f.access = access; f.type = type; f.language = language; f.returnType = returnType; QValueList<MetaDataBase::Function>::Iterator it = r->functionList.find( f ); if ( it != r->functionList.end() ) r->functionList.remove( it ); r->functionList.append( f ); ( (FormWindow*)o )->formFile()->addFunctionCode( f );}void MetaDataBase::setFunctionList( QObject *o, const QValueList<Function> &functionList ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return; } r->functionList = functionList;}void MetaDataBase::removeFunction( QObject *o, const QCString &function, const QString &specifier, const QString &access, const QString &type, const QString &language, const QString &returnType ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return; } for ( QValueList<Function>::Iterator it = r->functionList.begin(); it != r->functionList.end(); ++it ) { if ( MetaDataBase::normalizeFunction( (*it).function ) == MetaDataBase::normalizeFunction( function ) && (*it).specifier == specifier && (*it).access == access && (*it).type == type && ( language.isEmpty() || (*it).language == language ) && ( returnType.isEmpty() || (*it).returnType == returnType ) ) { ( (FormWindow*)o )->formFile()->removeFunctionCode( *it ); r->functionList.remove( it ); break; } }}void MetaDataBase::removeFunction( QObject *o, const QString &function ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return; } for ( QValueList<Function>::Iterator it = r->functionList.begin(); it != r->functionList.end(); ++it ) { if ( normalizeFunction( (*it).function ) == normalizeFunction( function ) ) { ( (FormWindow*)o )->formFile()->removeFunctionCode( *it ); r->functionList.remove( it ); break; } }}QValueList<MetaDataBase::Function> MetaDataBase::functionList( QObject *o, bool onlyFunctions ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return QValueList<Function>(); } if ( !onlyFunctions ) return r->functionList; QValueList<Function> fList; for ( QValueList<Function>::Iterator it = r->functionList.begin(); it != r->functionList.end(); ++it ) { if ( (*it).type == "function" ) fList.append( *it ); } return fList;}QValueList<MetaDataBase::Function> MetaDataBase::slotList( QObject *o ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return QValueList<Function>(); } QValueList<Function> slotList; for ( QValueList<Function>::Iterator it = r->functionList.begin(); it != r->functionList.end(); ++it ) { if ( (*it).type == "slot" ) slotList.append( *it ); } return slotList;}void MetaDataBase::changeFunction( QObject *o, const QString &function, const QString &newName, const QString &returnType ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return; } for ( QValueList<Function>::Iterator it = r->functionList.begin(); it != r->functionList.end(); ++it ) { Function f = *it; if ( normalizeFunction( f.function ) == normalizeFunction( function ) ) { (*it).function = newName; if ( !returnType.isNull() ) (*it).returnType = returnType; return; } }}void MetaDataBase::changeFunctionAttributes( QObject *o, const QString &oldName, const QString &newName, const QString &specifier, const QString &access, const QString &type, const QString &language, const QString &returnType ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return; } for ( QValueList<Function>::Iterator it = r->functionList.begin(); it != r->functionList.end(); ++it ) { Function f = *it; if ( normalizeFunction( f.function ) == normalizeFunction( oldName ) ) { (*it).function = newName; (*it).specifier = specifier; (*it).access = access; (*it).type = type; (*it).language = language; (*it).returnType = returnType; return; } }}bool MetaDataBase::hasFunction( QObject *o, const QCString &function, bool onlyCustom ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return FALSE; } if ( !onlyCustom ) { QStrList functionList = o->metaObject()->slotNames( TRUE ); if ( functionList.find( function ) != -1 ) return TRUE; if ( o->inherits( "FormWindow" ) ) { o = ( (FormWindow*)o )->mainContainer(); functionList = o->metaObject()->slotNames( TRUE ); if ( functionList.find( function ) != -1 ) return TRUE; } if ( o->inherits( "CustomWidget" ) ) { MetaDataBase::CustomWidget *w = ( (::CustomWidget*)o )->customWidget(); for ( QValueList<Function>::Iterator it = w->lstSlots.begin(); it != w->lstSlots.end(); ++it ) { QCString s = (*it).function; if ( !s.data() ) continue; if ( s == function ) return TRUE; } } } for ( QValueList<Function>::Iterator it = r->functionList.begin(); it != r->functionList.end(); ++it ) { Function f = *it; if ( normalizeFunction( f.function ) == normalizeFunction( function ) ) return TRUE; } return FALSE;}QString MetaDataBase::languageOfFunction( QObject *o, const QCString &function ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return QString::null; } QString fu = normalizeFunction( function ); for ( QValueList<Function>::Iterator it = r->functionList.begin(); it != r->functionList.end(); ++it ) { if ( fu == normalizeFunction( (*it).function ) ) return (*it).language; } return QString::null;}bool MetaDataBase::addCustomWidget( CustomWidget *wid ){ setupDataBase(); for ( CustomWidget *w = cWidgets->first(); w; w = cWidgets->next() ) { if ( *wid == *w ) { for ( QValueList<QCString>::ConstIterator it = wid->lstSignals.begin(); it != wid->lstSignals.end(); ++it ) { if ( !w->hasSignal( *it ) ) w->lstSignals.append( *it ); } for ( QValueList<Function>::ConstIterator it2 = wid->lstSlots.begin(); it2 != wid->lstSlots.end(); ++it2 ) { if ( !w->hasSlot( MetaDataBase::normalizeFunction( (*it2).function ).latin1() ) ) w->lstSlots.append( *it2 ); } for ( QValueList<Property>::ConstIterator it3 = wid->lstProperties.begin(); it3 != wid->lstProperties.end(); ++it3 ) { if ( !w->hasProperty( (*it3).property ) ) w->lstProperties.append( *it3 ); } delete wid; return FALSE; } } WidgetDatabaseRecord *r = new WidgetDatabaseRecord; r->name = wid->className; r->group = WidgetDatabase::widgetGroup( "Custom" ); r->toolTip = wid->className; r->icon = new QIconSet( *wid->pixmap, *wid->pixmap ); r->isContainer = wid->isContainer; wid->id = WidgetDatabase::addCustomWidget( r ); cWidgets->append( wid ); return TRUE;}void MetaDataBase::removeCustomWidget( CustomWidget *w ){ cWidgets->removeRef( w );}QPtrList<MetaDataBase::CustomWidget> *MetaDataBase::customWidgets(){ setupDataBase(); return cWidgets;}MetaDataBase::CustomWidget *MetaDataBase::customWidget( int id ){ for ( CustomWidget *w = cWidgets->first(); w; w = cWidgets->next() ) { if ( id == w->id ) return w; } return 0;}bool MetaDataBase::isWidgetNameUsed( CustomWidget *wid ){ for ( CustomWidget *w = cWidgets->first(); w; w = cWidgets->next() ) { if ( w == wid ) continue; if ( wid->className == w->className ) return TRUE; } return FALSE;}bool MetaDataBase::hasCustomWidget( const QString &className ){ for ( CustomWidget *w = cWidgets->first(); w; w = cWidgets->next() ) { if ( w->className == className ) return TRUE; } return FALSE;}void MetaDataBase::setTabOrder( QWidget *w, const QWidgetList &order ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*) w ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", w, w->name(), w->className() ); return; } r->tabOrder = order;}QWidgetList MetaDataBase::tabOrder( QWidget *w ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*) w ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", w, w->name(), w->className() ); return QWidgetList(); } return r->tabOrder;}void MetaDataBase::setIncludes( QObject *o, const QValueList<Include> &incs ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return; } r->includes = incs;}QValueList<MetaDataBase::Include> MetaDataBase::includes( QObject *o ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return QValueList<Include>(); } return r->includes;}void MetaDataBase::setForwards( QObject *o, const QStringList &fwds ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return; } r->forwards = fwds;}QStringList MetaDataBase::forwards( QObject *o ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return QStringList(); } return r->forwards;}void MetaDataBase::setVariables( QObject *o, const QValueList<Variable> &vars ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return; } r->variables = vars;}void MetaDataBase::addVariable( QObject *o, const QString &name, const QString &access ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return; } Variable v; v.varName = name; v.varAccess = access; r->variables << v;}void MetaDataBase::removeVariable( QObject *o, const QString &name ){ setupDataBase(); MetaDataBaseRecord *r = db->find( (void*)o );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -