Esempio n. 1
0
	void SeparateTabWidget::handleCloneTab ()
	{
		const auto index = sender ()->property ("TabIndex").toInt ();
		const auto widget = Widget (index);
		const auto irt = qobject_cast<IRecoverableTab*> (widget);

		const auto plugin = qobject_cast<ITabWidget*> (widget)->ParentMultiTabs ();
		const auto ihrt = qobject_cast<IHaveRecoverableTabs*> (plugin);

		if (!widget || !irt || !ihrt)
		{
			qWarning () << Q_FUNC_INFO
					<< "something required is null:"
					<< widget
					<< irt
					<< ihrt;
			return;
		}

		const auto& data = irt->GetTabRecoverData ();

		QList<QPair<QByteArray, QVariant>> props;
		for (const auto& name : widget->dynamicPropertyNames ())
			if (name.startsWith ("SessionData/"))
				props.append ({ name, widget->property (name) });

		ihrt->RecoverTabs ({ { data, props } });
	}
bool    Properties::hasProperty( QString propertyName )
{
    int pi = metaObject( )->indexOfProperty( propertyName.toLatin1( ) );
    if ( pi != -1 )
        return true;    // A static property with the searched name exists

    QList< QByteArray > dynamicProperties = dynamicPropertyNames( );
    foreach ( QByteArray dynamicProperty, dynamicProperties )
        if ( QString( dynamicProperty ) == propertyName )
            return true;
    return false;
}
void    Properties::serializeOut( QXmlStreamWriter& stream )
{
    stream.writeStartElement( "properties" );   // <properties>

    // Serialize static properties
    int pCount = metaObject( )->propertyCount( );
    for ( int i = 0; i < pCount; ++i )
    {
        QMetaProperty metaProperty = metaObject( )->property( i );
        QString propertyName = QString( metaProperty.name( ) );
        QVariant v = property( propertyName.toLatin1( ) );

        stream.writeStartElement( "property" );     // <property>
        stream.writeAttribute( "name", propertyName );
        serializeValueOut( v, stream );
        serializeTimeValuesOut( propertyName, stream );

        stream.writeEndElement( );                  // </property>
    }

    // Serialize dynamic properties
    QList< QByteArray > dynamicProperties = dynamicPropertyNames( );
    for ( int d = 0; d < dynamicProperties.size( ); d++ )
    {
        QString propertyName = dynamicProperties.at( d );
        QVariant v = property( propertyName.toLatin1( ) );

        stream.writeStartElement( "property" );     // <property>
        stream.writeAttribute( "name", propertyName );
        serializeValueOut( v, stream );

        if ( isEnum( propertyName ) )
            stream.writeAttribute( "isEnum", getEnumValueLabels( propertyName ).join( ',') );
        serializeTimeValuesOut( propertyName, stream );

        stream.writeEndElement( );                  // </property>
    }

    stream.writeEndElement( );                  // </properties>
}
Esempio n. 4
0
void QcepImageDataBase::copyProperties(QcepImageDataBase *dest)
{
    dest -> set_Type(get_Type());
    dest -> set_Creator(get_Creator());
    dest -> set_Version(get_Version());
    dest -> set_QtVersion(get_QtVersion());
    dest -> set_DataType(get_DataType());
    dest -> set_FileBase(get_FileBase());
    dest -> set_FileName(get_FileName());
    dest -> set_Title(get_Title());
    dest -> set_ReadoutMode(get_ReadoutMode());
    dest -> set_ExposureTime(get_ExposureTime());
    dest -> set_SummedExposures(get_SummedExposures());
    dest -> set_ImageSequenceNumber(get_ImageSequenceNumber());
    dest -> set_ImageNumber(get_ImageNumber());
    dest -> set_PhaseNumber(get_PhaseNumber());
    dest -> set_NPhases(get_NPhases());
    dest -> set_DateTime(get_DateTime());
    dest -> set_HBinning(get_HBinning());
    dest -> set_VBinning(get_VBinning());
    dest -> set_CameraGain(get_CameraGain());
    dest -> set_Triggered(get_Triggered());
    dest -> set_UserComment1(get_UserComment1());
    dest -> set_UserComment2(get_UserComment2());
    dest -> set_UserComment3(get_UserComment3());
    dest -> set_UserComment4(get_UserComment4());
    dest -> set_ObjectSaved(get_ObjectSaved());
    dest -> set_Normalization(get_Normalization());
    dest -> set_ExtraInputs(get_ExtraInputs());
    dest -> set_Used(get_Used());

    QByteArray name;

    foreach(name, dynamicPropertyNames()) {
        dest -> setProperty(name.data(), property(name.data()));
    }
Esempio n. 5
0
bool Message::hasProperty(const QString &name) const
{
    return dynamicPropertyNames().contains(name.toUtf8().constData());
}
Esempio n. 6
0
void CDiagramItem::toXml(QDomElement &n)
{
	QMetaObject				*meta = NULL;
  QMetaProperty			prop;
	QDomDocument			doc;
	QDomElement				ext, childNode;
	QList<QByteArray>		props;
  QStringList				filtersOut, filtersIn;
	CDiagramSerializable	*inst = NULL;

    filtersIn = filterProperties();
    filtersOut  << "width"
                << "height"
                << "x"
                << "y"
                << "z"
                << "pos"
                << "size"
                << "parent"
                << "effect"
                << "children"
                << "layout"
                << "palette";

	doc = n.ownerDocument();
	ext = doc.createElement( QString("ext") );
	childNode = doc.createElement( QString("children") );

	n.setAttribute( QString("type"), interType());
	n.setAttribute( QString("category"), category() );
	n.setAttribute( QString("name"), name() );
	n.setAttribute( QString("libCategory"), libraryCategory() );
	n.setAttribute( QString("libName"), libraryName() );
	n.setAttribute( QString("id"), QString::number(id()) );
	
	meta = const_cast<QMetaObject*>(metaObject());
	for (int i = 0; i < meta->propertyCount(); ++i)
	{
		QString		propName;
		QByteArray	b;
		QDataStream s(&b, QIODevice::WriteOnly);

		prop = meta->property(i);
		propName = QString(prop.name());
        if (filtersIn.isEmpty())
        {
            if (filtersOut.contains(propName, Qt::CaseInsensitive) || prop.userType() == 0)
            {
                continue;
            }
        }
        else
        {
            if (!filtersIn.contains(propName, Qt::CaseInsensitive))
            {
                continue;
            }
        }
		
		if (prop.isValid() && prop.isReadable())
		{
			s <<  prop.read(this);
			QDomElement	e = doc.createElement(QString("property"));
			e.setAttribute( QString("name"), QString(prop.name()) );
			e.setAttribute( QString("type"), QString(prop.typeName()) );
			e.appendChild( doc.createTextNode( QString(b.toBase64() ) ) );
			n.appendChild(e);
			// qDebug() << "save->name:" << prop.name() << " value:" << prop.read(this);
		}
	}
	
	props = dynamicPropertyNames();
	for (int i = 0; i < props.length(); ++i)
	{
		inst = RS_PROPERTY(props.at(i).constData());
		// inst = property(props.at(i).constData()).value<CDiagramSerializable*>();
		if (inst)
		{
			QDomElement	 c = doc.createElement(QString("child"));
			c.setAttribute( QString("dynamicProperty"), QString(props.at(i).constData()) );
			inst->toXml(c);
			childNode.appendChild(c);
		}
	}
	n.appendChild(childNode);

	extToXml( ext );
	n.appendChild( ext );
}