void SizePolicyCustomProperty::setValue(const QVariant &value, bool rememberOldValue) { if(!m_property) return; if(m_property->parent()) { QSizePolicy v = m_property->parent()->value().toSizePolicy(); if(m_property->type() == SizePolicy_HorData) v.setHorData(QSizePolicy::SizeType(value.toInt())); else if(m_property->type() == SizePolicy_VerData) v.setVerData(QSizePolicy::SizeType(value.toInt())); else if(m_property->type() == SizePolicy_HorStretch) v.setHorStretch(value.toInt()); else if(m_property->type() == SizePolicy_VerStretch) v.setVerStretch(value.toInt()); m_property->parent()->setValue(v, true, false); } else { QSizePolicy v = value.toSizePolicy(); m_property->child("hSizeType")->setValue(v.horData(), rememberOldValue, false); m_property->child("vSizeType")->setValue(v.verData(), rememberOldValue, false); m_property->child("hStretch")->setValue(v.horStretch(), rememberOldValue, false); m_property->child("vStretch")->setValue(v.verStretch(), rememberOldValue, false); } }
ProxyChooser::ProxyChooser(ProxyManager *m, QWidget *parent, const char *name) :QWidget(parent, name) { d = new Private; d->m = m; connect(m, SIGNAL(settingsChanged()), SLOT(pm_settingsChanged())); QHBoxLayout *hb = new QHBoxLayout(this, 0, 4); d->cb_proxy = new QComboBox(this); QSizePolicy sp = d->cb_proxy->sizePolicy(); d->cb_proxy->setSizePolicy( QSizePolicy(QSizePolicy::Expanding, sp.verData()) ); hb->addWidget(d->cb_proxy); d->pb_edit = new QPushButton(tr("Edit..."), this); connect(d->pb_edit, SIGNAL(clicked()), SLOT(doOpen())); hb->addWidget(d->pb_edit); buildComboBox(); }
/*! Attention: this function has to be in sync with Resource::saveProperty() and DomTool::elementToVariant. If you change one, change all. */ QString Uic::setObjectProperty( const QString& objClass, const QString& obj, const QString &prop, const QDomElement &e, bool stdset ) { QString v; if ( e.tagName() == "rect" ) { QDomElement n3 = e.firstChild().toElement(); int x = 0, y = 0, w = 0, h = 0; while ( !n3.isNull() ) { if ( n3.tagName() == "x" ) x = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "y" ) y = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "width" ) w = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "height" ) h = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } v = "QRect( %1, %2, %3, %4 )"; v = v.arg(x).arg(y).arg(w).arg(h); } else if ( e.tagName() == "point" ) { QDomElement n3 = e.firstChild().toElement(); int x = 0, y = 0; while ( !n3.isNull() ) { if ( n3.tagName() == "x" ) x = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "y" ) y = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } v = "QPoint( %1, %2 )"; v = v.arg(x).arg(y); } else if ( e.tagName() == "size" ) { QDomElement n3 = e.firstChild().toElement(); int w = 0, h = 0; while ( !n3.isNull() ) { if ( n3.tagName() == "width" ) w = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "height" ) h = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } v = "QSize( %1, %2 )"; v = v.arg(w).arg(h); } else if ( e.tagName() == "color" ) { QDomElement n3 = e.firstChild().toElement(); int r = 0, g = 0, b = 0; while ( !n3.isNull() ) { if ( n3.tagName() == "red" ) r = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "green" ) g = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "blue" ) b = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } v = "QColor( %1, %2, %3 )"; v = v.arg(r).arg(g).arg(b); } else if ( e.tagName() == "font" ) { QDomElement n3 = e.firstChild().toElement(); QString attrname = e.parentNode().toElement().attribute( "name", "font" ); QString fontname; if ( !obj.isEmpty() ) { fontname = registerObject( obj + "_" + attrname ); out << indent << "QFont " << fontname << "( " << obj << "->font() );" << endl; } else { fontname = registerObject( "f" ); out << indent << "QFont " << fontname << "( font() );" << endl; } while ( !n3.isNull() ) { if ( n3.tagName() == "family" ) out << indent << fontname << ".setFamily( \"" << n3.firstChild().toText().data() << "\" );" << endl; else if ( n3.tagName() == "pointsize" ) out << indent << fontname << ".setPointSize( " << n3.firstChild().toText().data() << " );" << endl; else if ( n3.tagName() == "bold" ) out << indent << fontname << ".setBold( " << mkBool( n3.firstChild().toText().data() ) << " );" << endl; else if ( n3.tagName() == "italic" ) out << indent << fontname << ".setItalic( " << mkBool( n3.firstChild().toText().data() ) << " );" << endl; else if ( n3.tagName() == "underline" ) out << indent << fontname << ".setUnderline( " << mkBool( n3.firstChild().toText().data() ) << " );" << endl; else if ( n3.tagName() == "strikeout" ) out << indent << fontname << ".setStrikeOut( " << mkBool( n3.firstChild().toText().data() ) << " );" << endl; n3 = n3.nextSibling().toElement(); } if ( prop == "font" ) { if ( !obj.isEmpty() ) out << indent << obj << "->setFont( " << fontname << " ); " << endl; else out << indent << "setFont( " << fontname << " ); " << endl; } else { v = fontname; } } else if ( e.tagName() == "string" ) { QString txt = e.firstChild().toText().data(); QString com = getComment( e.parentNode() ); if ( prop == "toolTip" && objClass != "QAction" && objClass != "QActionGroup" ) { if ( !obj.isEmpty() ) trout << indent << "QToolTip::add( " << obj << ", " << trcall( txt, com ) << " );" << endl; else trout << indent << "QToolTip::add( this, " << trcall( txt, com ) << " );" << endl; } else if ( prop == "whatsThis" && objClass != "QAction" && objClass != "QActionGroup" ) { if ( !obj.isEmpty() ) trout << indent << "QWhatsThis::add( " << obj << ", " << trcall( txt, com ) << " );" << endl; else trout << indent << "QWhatsThis::add( this, " << trcall( txt, com ) << " );" << endl; } else { v = trcall( txt, com ); } } else if ( e.tagName() == "cstring" ) { v = "\"%1\""; v = v.arg( e.firstChild().toText().data() ); } else if ( e.tagName() == "number" ) { v = "%1"; v = v.arg( e.firstChild().toText().data() ); } else if ( e.tagName() == "bool" ) { if ( stdset ) v = "%1"; else v = "QVariant( %1, 0 )"; v = v.arg( mkBool( e.firstChild().toText().data() ) ); } else if ( e.tagName() == "pixmap" ) { v = e.firstChild().toText().data(); if ( !pixmapLoaderFunction.isEmpty() ) { v.prepend( pixmapLoaderFunction + "( " + QString( externPixmaps ? "\"" : "" ) ); v.append( QString( externPixmaps ? "\"" : "" ) + " )" ); } } else if ( e.tagName() == "iconset" ) { v = "QIconSet( %1 )"; QString s = e.firstChild().toText().data(); if ( !pixmapLoaderFunction.isEmpty() ) { s.prepend( pixmapLoaderFunction + "( " + QString( externPixmaps ? "\"" : "" ) ); s.append( QString( externPixmaps ? "\"" : "" ) + " )" ); } v = v.arg( s ); } else if ( e.tagName() == "image" ) { v = e.firstChild().toText().data() + ".convertToImage()"; } else if ( e.tagName() == "enum" ) { if ( stdset ) v = "%1::%2"; else v = "\"%1\""; QString oc = objClass; QString ev = e.firstChild().toText().data(); if ( oc == "QListView" && ev == "Manual" ) // #### workaround, rename QListView::Manual in 4.0 oc = "QScrollView"; if ( stdset ) v = v.arg( oc ).arg( ev ); else v = v.arg( ev ); } else if ( e.tagName() == "set" ) { QString keys( e.firstChild().toText().data() ); QStringList lst = QStringList::split( '|', keys ); v = "int( "; QStringList::Iterator it = lst.begin(); while ( it != lst.end() ) { v += objClass + "::" + *it; if ( it != lst.fromLast() ) v += " | "; ++it; } v += " )"; } else if ( e.tagName() == "sizepolicy" ) { QDomElement n3 = e.firstChild().toElement(); QSizePolicy sp; while ( !n3.isNull() ) { if ( n3.tagName() == "hsizetype" ) sp.setHorData( (QSizePolicy::SizeType)n3.firstChild().toText().data().toInt() ); else if ( n3.tagName() == "vsizetype" ) sp.setVerData( (QSizePolicy::SizeType)n3.firstChild().toText().data().toInt() ); else if ( n3.tagName() == "horstretch" ) sp.setHorStretch( n3.firstChild().toText().data().toInt() ); else if ( n3.tagName() == "verstretch" ) sp.setVerStretch( n3.firstChild().toText().data().toInt() ); n3 = n3.nextSibling().toElement(); } QString tmp; if ( !obj.isEmpty() ) tmp = obj + "->"; v = "QSizePolicy( (QSizePolicy::SizeType)%1, (QSizePolicy::SizeType)%2, %3, %4, " + tmp + "sizePolicy().hasHeightForWidth() )"; v = v.arg( (int)sp.horData() ).arg( (int)sp.verData() ).arg( sp.horStretch() ).arg( sp.verStretch() ); } else if ( e.tagName() == "palette" ) { QPalette pal; bool no_pixmaps = e.elementsByTagName( "pixmap" ).count() == 0; QDomElement n; if ( no_pixmaps ) { n = e.firstChild().toElement(); while ( !n.isNull() ) { QColorGroup cg; if ( n.tagName() == "active" ) { cg = loadColorGroup( n ); pal.setActive( cg ); } else if ( n.tagName() == "inactive" ) { cg = loadColorGroup( n ); pal.setInactive( cg ); } else if ( n.tagName() == "disabled" ) { cg = loadColorGroup( n ); pal.setDisabled( cg ); } n = n.nextSibling().toElement(); } } if ( no_pixmaps && pal == QPalette( pal.active().button(), pal.active().background() ) ) { v = "QPalette( QColor( %1, %2, %3 ), QColor( %1, %2, %3 ) )"; v = v.arg( pal.active().button().red() ).arg( pal.active().button().green() ).arg( pal.active().button().blue() ); v = v.arg( pal.active().background().red() ).arg( pal.active().background().green() ).arg( pal.active().background().blue() ); } else { QString palette = "pal"; if ( !pal_used ) { out << indent << "QPalette " << palette << ";" << endl; pal_used = TRUE; } QString cg = "cg"; if ( !cg_used ) { out << indent << "QColorGroup " << cg << ";" << endl; cg_used = TRUE; } n = e.firstChild().toElement(); while ( !n.isNull() && n.tagName() != "active" ) n = n.nextSibling().toElement(); createColorGroupImpl( cg, n ); out << indent << palette << ".setActive( " << cg << " );" << endl; n = e.firstChild().toElement(); while ( !n.isNull() && n.tagName() != "inactive" ) n = n.nextSibling().toElement(); createColorGroupImpl( cg, n ); out << indent << palette << ".setInactive( " << cg << " );" << endl; n = e.firstChild().toElement(); while ( !n.isNull() && n.tagName() != "disabled" ) n = n.nextSibling().toElement(); createColorGroupImpl( cg, n ); out << indent << palette << ".setDisabled( " << cg << " );" << endl; v = palette; } } else if ( e.tagName() == "cursor" ) { v = "QCursor( %1 )"; v = v.arg( e.firstChild().toText().data() ); } else if ( e.tagName() == "date" ) { QDomElement n3 = e.firstChild().toElement(); int y, m, d; y = m = d = 0; while ( !n3.isNull() ) { if ( n3.tagName() == "year" ) y = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "month" ) m = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "day" ) d = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } v = "QDate( %1, %2, %3 )"; v = v.arg(y).arg(m).arg(d); } else if ( e.tagName() == "time" ) { QDomElement n3 = e.firstChild().toElement(); int h, m, s; h = m = s = 0; while ( !n3.isNull() ) { if ( n3.tagName() == "hour" ) h = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "minute" ) m = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "second" ) s = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } v = "QTime( %1, %2, %3 )"; v = v.arg(h).arg(m).arg(s); } else if ( e.tagName() == "datetime" ) { QDomElement n3 = e.firstChild().toElement(); int h, mi, s, y, mo, d; h = mi = s = y = mo = d = 0; while ( !n3.isNull() ) { if ( n3.tagName() == "hour" ) h = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "minute" ) mi = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "second" ) s = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "year" ) y = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "month" ) mo = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "day" ) d = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } v = "QDateTime( QDate( %1, %2, %3 ), QTime( %4, %5, %6 ) )"; v = v.arg(y).arg(mo).arg(d).arg(h).arg(mi).arg(s); } else if ( e.tagName() == "stringlist" ) { QStringList l; QDomElement n3 = e.firstChild().toElement(); QString listname = "l"; if ( !obj.isEmpty() ) { listname = obj + "_stringlist"; listname = registerObject( listname ); out << indent << "QStringList " << listname << ";" << endl; } else { listname = registerObject( listname ); out << indent << "QStringList " << listname << ";" << endl; } while ( !n3.isNull() ) { if ( n3.tagName() == "string" ) out << indent << listname << " << \"" << n3.firstChild().toText().data().simplifyWhiteSpace() << "\";" << endl; n3 = n3.nextSibling().toElement(); } v = listname; } return v; }
void process(const QObject * obj){ if(obj != NULL){ QListViewItem * buf = __current; __current = new QListViewItem(__current,obj->className(),QString(obj->name())); __current->setPixmap(0,__pixgeom); QMetaObject* _m = obj->metaObject(); QListViewItem * att = NULL; if(_m != NULL){ QString _superclass(_m->superClassName()); if(!_superclass.isEmpty()){ att = new QListViewItem(__current,"Inherit",_superclass); att->setPixmap(0,__pixattptr); QMetaObject* _meta = _m->superClass(); QListViewItem * att4 = NULL; while((_meta = _meta->superClass())!= NULL){ att4 = new QListViewItem(att,att4,QString(_meta->className())); att4->setPixmap(0,__pixatt); } } att = new QListViewItem(__current,att,"Priority",(obj->highPriority()?"High":"Normal")); att->setPixmap(0,__pixatt); att = new QListViewItem(__current,att,"Widget",(obj->isWidgetType()?"True":"False")); att->setPixmap(0,__pixatt); QStrList _slots = _m->slotNames(true); if(!_slots.isEmpty()){ att = new QListViewItem(__current,att,"Slots"); att->setPixmap(0,__pixtransf); uint sl_size = _slots.count(); QListViewItem * att2 = NULL; for(uint j = 0; j < sl_size; j++ ){ att2 = new QListViewItem(att,att2,_slots.at(j)); att2->setPixmap(0,__pixatt); } } QStrList _signals = _m->signalNames(true); if(!_signals.isEmpty()){ att = new QListViewItem(__current,att,"Signals"); att->setPixmap(0,__pixtransf); uint si_size = _signals.count(); QListViewItem * att2 = NULL; for(uint j = 0; j < si_size; j++ ){ att2 = new QListViewItem(att,att2,_signals.at(j)); att2->setPixmap(0,__pixatt); } } int numCInfo = _m->numClassInfo(true); if(numCInfo !=0){ att = new QListViewItem(__current,att,"ClassInfo","List<Info>["+QString::number(numCInfo)+']'); att->setPixmap(0,__pixtransf); QListViewItem * att2 = NULL; for(int j = 0; j < numCInfo; j++ ){ const QClassInfo * _inf = _m->classInfo(j); if(_inf != NULL){ att2 = new QListViewItem(att,att2,QString(_inf->name),QString(_inf->value)); att2->setPixmap(0,__pixatt); } } } QStrList _props = _m->propertyNames(true); if(!_props.isEmpty()){ att = new QListViewItem(__current,att,"Properties"); att->setPixmap(0,__pixtransf); uint p_size = _props.count(); QListViewItem * att2 = NULL; for(uint j = 0; j < p_size; j++ ){ att2 = new QListViewItem(att,att2,_props.at(j)); att2->setPixmap(0,__pixatt); QVariant val; QString propname(_props.at(j)); #if QT_VERSION >= 300 const QMetaProperty* prop = _m->property (j,true); #else const QMetaProperty* prop = _m->property (propname,true); #endif QString proptype; if(prop){ proptype = prop->type(); att2->setText(2,proptype); /* QListViewItem * att3 = new QListViewItem(att2,"Writable",(prop->writable()?"True":"False")); att3->setPixmap(0,__pixatt); att3 = new QListViewItem(att2,att3,"Designable",(prop->designable()?"True":"False")); att3->setPixmap(0,__pixatt); */ } val = obj->property(propname); if(!val.isValid())att2->setText(1,"Invalid"); else if(prop->isEnumType()){ att2->setText(1,prop->valueToKey(val.toInt())); } else if(prop->isSetType()){ QStrList st = prop->valueToKeys(val.toInt()); QString t = st.at(0); for(uint i= 1; i < st.count(); i++)t+='/'+st.at(i); att2->setText(1,t); } else if(val.type() == QVariant::String)att2->setText(1,'"'+val.toString()+'"'); else if(val.type() == QVariant::CString)att2->setText(1,'"'+val.toCString()+'"'); else if(val.type() == QVariant::Bool){ if(val.toBool())att2->setText(1,"True"); else att2->setText(1,"False"); } else if(val.type() == QVariant::Int)att2->setText(1,QString::number(val.toInt())); else if(val.type() == QVariant::UInt)att2->setText(1,QString::number(val.toUInt())); else if(val.type() == QVariant::Double)att2->setText(1,QString::number(val.toDouble())); else if(val.type() == QVariant::Rect){ const QRect r = val.toRect(); att2->setText(1,'[' + QString::number(r.left()) + ',' + QString::number(r.top())+ ',' + QString::number(r.right()) + ',' + QString::number(r.bottom())+']'); } else if(val.type() == QVariant::Region){ const QRegion reg = val.toRegion(); QRect r = reg.boundingRect(); att2->setText(1,'[' + QString::number(r.left()) + ',' + QString::number(r.top())+ ',' + QString::number(r.right()) + ',' + QString::number(r.bottom())+"],"); } else if(val.type() == QVariant::Size){ const QSize s = val.toSize(); att2->setText(1,'[' + QString::number(s.width()) + ',' + QString::number(s.height())+']'); } else if(val.type() == QVariant::Point){ const QPoint p = val.toPoint(); att2->setText(1,'[' + QString::number(p.x()) + ',' + QString::number(p.y())+']'); } else if(val.type() == QVariant::Color){ const QColor c = val.toColor(); att2->setText(1,'[' + QString::number(c.red()) + ',' + QString::number(c.green()) + ',' + QString::number(c.blue()) + ']'); } else if(val.type() == QVariant::ColorGroup){ const QColorGroup cg = val.toColorGroup(); QColor c = cg.base(); att2->setText(1,'[' + QString::number(c.red()) + ',' + QString::number(c.green()) + ',' + QString::number(c.blue()) + "], ..."); } else if(val.type() == QVariant::Font){ const QFont f = val.toFont(); QString text = '\'' + f.family() + "', " + QString::number(f.pointSize()) + ", " + QString::number(f.weight()); if(f.italic())text+=", italic"; att2->setText(1,text); } else if(val.type() == QVariant::SizePolicy){ QSizePolicy sp = val.toSizePolicy(); QString text; if(sp.horData() == QSizePolicy::Fixed)text+="Fixed"; else if(sp.horData() == QSizePolicy::Minimum )text+="Minimum"; else if(sp.horData() == QSizePolicy::Maximum )text+="Maximum"; else if(sp.horData() == QSizePolicy::Preferred )text+="Preferred"; else if(sp.horData() == QSizePolicy::MinimumExpanding )text+="MinimumExpanding"; else if(sp.horData() == QSizePolicy::Expanding )text+="Expanding"; text +='/'; if(sp.verData() == QSizePolicy::Fixed)text+="Fixed"; else if(sp.verData() == QSizePolicy::Minimum )text+="Minimum"; else if(sp.verData() == QSizePolicy::Maximum )text+="Maximum"; else if(sp.verData() == QSizePolicy::Preferred )text+="Preferred"; else if(sp.verData() == QSizePolicy::MinimumExpanding )text+="MinimumExpanding"; else if(sp.verData() == QSizePolicy::Expanding )text+="Expanding"; att2->setText(1,text); } else if(val.type() == QVariant::Pixmap){ QPixmap pix = val.toPixmap(); if(!pix.isNull())att2->setPixmap(1,pix); } else if(val.type() == QVariant::Cursor){ const QCursor cur = val.toCursor(); const QBitmap * pix = cur.bitmap(); if(pix && !pix->isNull())att2->setPixmap(1,*pix); else att2->setText(1,QString::number(cur.shape())); } } } } const QObjectList * roots = obj->children(); if(roots != NULL){ __current = new QListViewItem(__current,att,"children","ptr="+QString::number((unsigned long)roots), "List<QObject>["+QString::number(roots->count())+"]"); __current->setPixmap(0,__pixappe); QObjectList r(*roots); uint size = r.count(); for(uint i = 0; i < size; i++ ){ QObject * _obj = r.at(i); process(_obj); } } __current = buf; } }