metadatabase.cpp
来自「qt-x11-free-3.0.3.tar.gz minigui图形界面工具」· C++ 代码 · 共 1,625 行 · 第 1/3 页
CPP
1,625 行
o, o->name(), o->className() ); return; } for ( QValueList<Slot>::Iterator it = r->slotList.begin(); it != r->slotList.end(); ++it ) { Slot s = *it; if ( s.slot == slot && s.specifier == specifier && s.access == access && ( language.isEmpty() || s.language == language ) && ( returnType.isEmpty() || s.returnType == returnType ) ) { r->slotList.remove( it ); break; } }}void MetaDataBase::removeSlot( QObject *o, const QString &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; } for ( QValueList<Slot>::Iterator it = r->slotList.begin(); it != r->slotList.end(); ++it ) { Slot s = *it; if ( normalizeSlot( s.slot ) == normalizeSlot( slot ) ) { r->slotList.remove( it ); break; } }}QValueList<MetaDataBase::Slot> 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<Slot>(); } return r->slotList;}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::changeSlot( QObject *o, const QCString &slot, const QCString &newName ){ 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<Slot>::Iterator it = r->slotList.begin(); it != r->slotList.end(); ++it ) { Slot s = *it; if ( normalizeSlot( s.slot ) == normalizeSlot( slot ) ) { (*it).slot = newName; return; } }}void MetaDataBase::changeSlotAttributes( QObject *o, const QCString &slot, const QString& specifier, const QString &access, 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<Slot>::Iterator it = r->slotList.begin(); it != r->slotList.end(); ++it ) { Slot s = *it; if ( normalizeSlot( s.slot ) == normalizeSlot( slot ) ) { (*it).specifier = specifier; (*it).access = access; (*it).language = language; (*it).returnType = returnType; return; } }}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<Slot>::Iterator it = w->lstSlots.begin(); it != w->lstSlots.end(); ++it ) { QCString s = (*it).slot; if ( !s.data() ) continue; if ( s == slot ) return TRUE; } } } for ( QValueList<Slot>::Iterator it = r->slotList.begin(); it != r->slotList.end(); ++it ) { Slot s = *it; if ( normalizeSlot( s.slot ) == normalizeSlot( slot ) ) return TRUE; } return FALSE;}QString MetaDataBase::languageOfSlot( 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 QString::null; } QString sl = slot; sl = normalizeSlot( sl ); for ( QValueList<Slot>::Iterator it = r->slotList.begin(); it != r->slotList.end(); ++it ) { Slot s = *it; QString sl2 = s.slot; sl2 = normalizeSlot( sl2 ); if ( sl == sl2 ) return s.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<Slot>::ConstIterator it2 = wid->lstSlots.begin(); it2 != wid->lstSlots.end(); ++it2 ) { if ( !w->hasSlot( MetaDataBase::normalizeSlot( (*it2).slot ).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 QStringList &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;}QStringList 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 QStringList(); } return r->variables;}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( PixmapChooser::loadPixmap( "customwidget.xpm" ) ); 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(); 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(); 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 ( normalizeSlot( *it ) == normalizeSlot( signal ) ) return TRUE; } return FALSE;}bool MetaDataBase::CustomWidget::hasSlot( const QCString &slot ) const{ QStrList slotList = QWidget::staticMetaObject()->slotNames( TRUE ); if ( slotList.find( normalizeSlot( slot ) ) != -1 ) return TRUE; for ( QValueList<MetaDataBase::Slot>::ConstIterator it = lstSlots.begin(); it != lstSlots.end(); ++it ) { if ( normalizeSlot( (*it).slot ) == normalizeSlot( 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;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?