📄 metadatabase.cpp
字号:
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 ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return; } QValueList<Variable>::Iterator it = r->variables.begin(); for ( ; it != r->variables.end(); ++it ) { if ( (*it).varName == name ) { r->variables.remove( it ); break; } }}QValueList<MetaDataBase::Variable> MetaDataBase::variables( 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<MetaDataBase::Variable>(); } return r->variables;}bool MetaDataBase::hasVariable( QObject *o, const QString &name ){ 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<Variable>::Iterator it = r->variables.begin(); for ( ; it != r->variables.end(); ++it ) { if ( extractVariableName( name ) == extractVariableName( (*it).varName ) ) return TRUE; } return FALSE;}QString MetaDataBase::extractVariableName( const QString &name ){ QString n = name.right( name.length() - name.findRev( ' ' ) - 1 ); if ( n[ 0 ] == '*' || n[ 0 ] == '&' ) n[ 0 ] = ' '; if ( n[ (int)n.length() - 1 ] == ';' ) n[ (int)n.length() - 1 ] = ' '; return n.simplifyWhiteSpace();}void MetaDataBase::setSignalList( QObject *o, const QStringList &sigs ){ 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->sigs.clear(); for ( QStringList::ConstIterator it = sigs.begin(); it != sigs.end(); ++it ) { QString s = (*it).simplifyWhiteSpace(); bool hasSemicolon = s.endsWith( ";" ); if ( hasSemicolon ) s = s.left( s.length() - 1 ); int p = s.find( '(' ); if ( p < 0 ) p = s.length(); int sp = s.find( ' ' ); if ( sp >= 0 && sp < p ) { s = s.mid( sp+1 ); p -= sp + 1; } if ( p == (int) s.length() ) s += "()"; if ( hasSemicolon ) s += ";"; r->sigs << s; }}QStringList MetaDataBase::signalList( 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->sigs;}void MetaDataBase::setMetaInfo( QObject *o, MetaInfo mi ){ 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->metaInfo = mi;}MetaDataBase::MetaInfo MetaDataBase::metaInfo( 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 MetaInfo(); } return r->metaInfo;}MetaDataBase::CustomWidget::CustomWidget(){ className = "MyCustomWidget"; includeFile = "mywidget.h"; includePolicy = Local; sizeHint = QSize( -1, -1 ); pixmap = new QPixmap( QPixmap::fromMimeSource( "designer_customwidget.png" ) ); id = -1; sizePolicy = QSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred ); isContainer = FALSE;}MetaDataBase::CustomWidget::CustomWidget( const CustomWidget &w ){ className = w.className; includeFile = w.includeFile; includePolicy = w.includePolicy; sizeHint = w.sizeHint; if ( w.pixmap ) pixmap = new QPixmap( *w.pixmap ); else pixmap = 0; id = w.id; isContainer = w.isContainer;}void MetaDataBase::setCursor( QWidget *w, const QCursor &c ){ setupDataBase(); if ( w->isA( "PropertyObject" ) ) { ( (PropertyObject*)w )->mdSetCursor( c ); return; } 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->cursor = c;}QCursor MetaDataBase::cursor( QWidget *w ){ setupDataBase(); if ( w->isA( "PropertyObject" ) ) return ( (PropertyObject*)w )->mdCursor(); MetaDataBaseRecord *r = db->find( (void*)w ); if ( !r ) { w->unsetCursor(); return w->cursor(); } return r->cursor;}bool MetaDataBase::CustomWidget::operator==( const CustomWidget &w ) const{ return className == w.className;}MetaDataBase::CustomWidget &MetaDataBase::CustomWidget::operator=( const CustomWidget &w ){ delete pixmap; className = w.className; includeFile = w.includeFile; includePolicy = w.includePolicy; sizeHint = w.sizeHint; if ( w.pixmap ) pixmap = new QPixmap( *w.pixmap ); else pixmap = 0; lstSignals = w.lstSignals; lstSlots = w.lstSlots; lstProperties = w.lstProperties; id = w.id; isContainer = w.isContainer; return *this;}bool MetaDataBase::CustomWidget::hasSignal( const QCString &signal ) const{ QStrList sigList = QWidget::staticMetaObject()->signalNames( TRUE ); if ( sigList.find( signal ) != -1 ) return TRUE; for ( QValueList<QCString>::ConstIterator it = lstSignals.begin(); it != lstSignals.end(); ++it ) { if ( normalizeFunction( *it ) == normalizeFunction( signal ) ) return TRUE; } return FALSE;}bool MetaDataBase::CustomWidget::hasSlot( const QCString &slot ) const{ QStrList slotList = QWidget::staticMetaObject()->slotNames( TRUE ); if ( slotList.find( normalizeFunction( slot ) ) != -1 ) return TRUE; for ( QValueList<MetaDataBase::Function>::ConstIterator it = lstSlots.begin(); it != lstSlots.end(); ++it ) { if ( normalizeFunction( (*it).function ) == normalizeFunction( slot ) ) return TRUE; } return FALSE;}bool MetaDataBase::CustomWidget::hasProperty( const QCString &prop ) const{ QStrList propList = QWidget::staticMetaObject()->propertyNames( TRUE ); if ( propList.find( prop ) != -1 ) return TRUE; for ( QValueList<MetaDataBase::Property>::ConstIterator it = lstProperties.begin(); it != lstProperties.end(); ++it ) { if ( (*it).property == prop ) return TRUE; } return FALSE;}void MetaDataBase::setPixmapArgument( QObject *o, int pixmap, const QString &arg ){ if ( !o ) return; 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->pixmapArguments.remove( pixmap ); r->pixmapArguments.insert( pixmap, arg );}QString MetaDataBase::pixmapArgument( QObject *o, int pixmap ){ if ( !o ) return QString::null; 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; } return *r->pixmapArguments.find( pixmap );}void MetaDataBase::clearPixmapArguments( QObject *o ){ if ( !o ) return; 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->pixmapArguments.clear();}void MetaDataBase::setPixmapKey( QObject *o, int pixmap, const QString &arg ){ if ( !o ) return; setupDataBase(); if ( o->isA( "PropertyObject" ) ) { ( (PropertyObject*)o )->mdSetPixmapKey( pixmap, arg ); return; } 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->pixmapKeys.remove( pixmap ); r->pixmapKeys.insert( pixmap, arg );}QString MetaDataBase::pixmapKey( QObject *o, int pixmap ){ if ( !o ) return QString::null; setupDataBase(); if ( o->isA( "PropertyObject" ) ) return ( (PropertyObject*)o )->mdPixmapKey( pixmap ); 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 s = *r->pixmapKeys.find( pixmap ); if ( !s.isNull() ) return s; if ( !o->isWidgetType() ) return s; QWidget *w = (QWidget*)o; if ( w->icon() ) return *r->pixmapKeys.find( w->icon()->serialNumber() ); return s;}void MetaDataBase::clearPixmapKeys( QObject *o ){ if ( !o ) return; 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->pixmapKeys.clear();}void MetaDataBase::setColumnFields( QObject *o, const QMap<QString, QString> &columnFields ){ if ( !o ) return; 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->columnFields = columnFields;}QMap<QString, QString> MetaDataBase::columnFields( QObject *o ){ if ( !o ) return QMap<QString, QString>(); 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 QMap<QString, QString>(); } return r->columnFields;}void MetaDataBase::setEditor( const QStringList &langs ){ editorLangList = langs;}bool MetaDataBase::hasEditor( const QString &lang ){ return editorLangList.find( lang ) != editorLangList.end();}void MetaDataBase::setupInterfaceManagers( const QString &plugDir ){ if ( !languageInterfaceManager ) { languageInterfaceManager = new QPluginManager<LanguageInterface>( IID_Language, QApplication::libraryPaths(), plugDir ); langList = languageInterfaceManager->featureList(); langList.remove( "C++" ); langList << "C++"; }}QStringList MetaDataBase::languages(){ return langList;}QString MetaDataBase::normalizeFunction( const QString &f ){ return Parser::cleanArgs( f );}LanguageInterface *MetaDataBase::languageInterface( const QString &lang ){ LanguageInterface* iface = 0; languageInterfaceManager->queryInterface( lang, &iface ); return iface;}void MetaDataBase::clear( QObject *o ){ if ( !o ) return; setupDataBase(); db->remove( (void*)o ); for ( QPtrDictIterator<QWidget> it( *( (FormWindow*)o )->widgets() ); it.current(); ++it ) db->remove( (void*)it.current() );}void MetaDataBase::setBreakPoints( QObject *o, const QValueList<uint> &l ){ if ( !o ) return; 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->breakPoints = l; QMap<int, QString>::Iterator it = r->breakPointConditions.begin(); while ( it != r->breakPointConditions.end() ) { int line = it.key(); ++it; if ( r->breakPoints.find( line ) == r->breakPoints.end() ) r->breakPointConditions.remove( r->breakPointConditions.find( line ) ); }}QValueList<uint> MetaDataBase::breakPoints( QObject *o ){ if ( !o ) return QValueList<uint>(); 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<uint>(); } return r->breakPoints;}void MetaDataBase::setBreakPointCondition( QObject *o, int line, const QString &condition ){ if ( !o ) return; 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->breakPointConditions.replace( line, condition );}QString MetaDataBase::breakPointCondition( QObject *o, int line ){ if ( !o ) return QString::null; 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; } QMap<int, QString>::Iterator it = r->breakPointConditions.find( line ); if ( it == r->breakPointConditions.end() ) return QString::null; return *it;}void MetaDataBase::setExportMacro( QObject *o, const QString ¯o ){ if ( !o ) return; setupDataBase(); if ( o->isA( "PropertyObject" ) ) { ( (PropertyObject*)o )->mdSetExportMacro( macro ); return; } 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->exportMacro = macro;}QString MetaDataBase::exportMacro( QObject *o ){ if ( !o ) return ""; setupDataBase(); if ( o->isA( "PropertyObject" ) ) return ( (PropertyObject*)o )->mdExportMacro(); MetaDataBaseRecord *r = db->find( (void*)o ); if ( !r ) { qWarning( "No entry for %p (%s, %s) found in MetaDataBase", o, o->name(), o->className() ); return ""; } return r->exportMacro;}bool MetaDataBase::hasObject( QObject *o ){ return !!db->find( o );}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -