bool QgsComposerNodesItem::readXML( const QDomElement& itemElem, const QDomDocument& doc ) { // restore general composer item properties const QDomNodeList composerItemList = itemElem.elementsByTagName( "ComposerItem" ); if ( !composerItemList.isEmpty() ) { QDomElement composerItemElem = composerItemList.at( 0 ).toElement(); if ( !qgsDoubleNear( composerItemElem.attribute( "rotation", "0" ).toDouble(), 0.0 ) ) setItemRotation( composerItemElem.attribute( "rotation", "0" ).toDouble() ); _readXML( composerItemElem, doc ); } // restore style QDomElement styleSymbolElem = itemElem.firstChildElement( "symbol" ); if ( !styleSymbolElem.isNull() ) _readXMLStyle( styleSymbolElem ); // restore nodes mPolygon.clear(); QDomNodeList nodesList = itemElem.elementsByTagName( "node" ); for ( int i = 0; i < nodesList.size(); i++ ) { QDomElement nodeElem = nodesList.at( i ).toElement(); QPointF newPt; newPt.setX( nodeElem.attribute( "x" ).toDouble() ); newPt.setY( nodeElem.attribute( "y" ).toDouble() ); mPolygon.append( newPt ); } emit itemChanged(); return true; }
bool QgsComposerHtml::readXML( const QDomElement& itemElem, const QDomDocument& doc, bool ignoreFrames ) { deleteFrames(); //first create the frames if ( !_readXML( itemElem, doc, ignoreFrames ) ) { return false; } bool contentModeOK; mContentMode = ( QgsComposerHtml::ContentMode )itemElem.attribute( "contentMode" ).toInt( &contentModeOK ); if ( !contentModeOK ) { mContentMode = QgsComposerHtml::Url; } mEvaluateExpressions = itemElem.attribute( "evaluateExpressions", "true" ) == "true" ? true : false; mUseSmartBreaks = itemElem.attribute( "useSmartBreaks", "true" ) == "true" ? true : false; mMaxBreakDistance = itemElem.attribute( "maxBreakDistance", "10" ).toDouble(); mHtml = itemElem.attribute( "html" ); mUserStylesheet = itemElem.attribute( "stylesheet" ); mEnableUserStylesheet = itemElem.attribute( "stylesheetEnabled", "false" ) == "true" ? true : false; //finally load the set url QString urlString = itemElem.attribute( "url" ); if ( !urlString.isEmpty() ) { mUrl = urlString; } loadHtml(); //since frames had to be created before, we need to emit a changed signal to refresh the widget emit changed(); return true; }
bool QgsComposerScaleBar::readXML( const QDomElement& itemElem, const QDomDocument& doc ) { if ( itemElem.isNull() ) { return false; } mHeight = itemElem.attribute( "height", "5.0" ).toDouble(); mLabelBarSpace = itemElem.attribute( "labelBarSpace", "3.0" ).toDouble(); mBoxContentSpace = itemElem.attribute( "boxContentSpace", "1.0" ).toDouble(); mNumSegments = itemElem.attribute( "numSegments", "2" ).toInt(); mNumSegmentsLeft = itemElem.attribute( "numSegmentsLeft", "0" ).toInt(); mNumUnitsPerSegment = itemElem.attribute( "numUnitsPerSegment", "1.0" ).toDouble(); mSegmentMillimeters = itemElem.attribute( "segmentMillimeters", "0.0" ).toDouble(); mNumMapUnitsPerScaleBarUnit = itemElem.attribute( "numMapUnitsPerScaleBarUnit", "1.0" ).toDouble(); mPen.setWidthF( itemElem.attribute( "outlineWidth", "1.0" ).toDouble() ); mUnitLabeling = itemElem.attribute( "unitLabel" ); QString fontString = itemElem.attribute( "font", "" ); if ( !fontString.isEmpty() ) { mFont.fromString( fontString ); } //style delete mStyle; mStyle = 0; QString styleString = itemElem.attribute( "style", "" ); setStyle( tr( styleString.toLocal8Bit().data() ) ); //map int mapId = itemElem.attribute( "mapId", "-1" ).toInt(); if ( mapId >= 0 ) { const QgsComposerMap* composerMap = mComposition->getComposerMapById( mapId ); mComposerMap = composerMap; if ( mComposerMap ) { connect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( updateSegmentSize() ) ); connect( mComposerMap, SIGNAL( destroyed( QObject* ) ), this, SLOT( invalidateCurrentMap() ) ); } } mUnits = ( ScaleBarUnits )itemElem.attribute( "units" ).toInt(); refreshSegmentMillimeters(); //alignment mAlignment = ( Alignment )( itemElem.attribute( "alignment", "0" ).toInt() ); //restore general composer item properties QDomNodeList composerItemList = itemElem.elementsByTagName( "ComposerItem" ); if ( composerItemList.size() > 0 ) { QDomElement composerItemElem = composerItemList.at( 0 ).toElement(); _readXML( composerItemElem, doc ); } return true; }
bool QgsComposerLabel::readXML( const QDomElement& itemElem, const QDomDocument& doc ) { QString alignment; if ( itemElem.isNull() ) { return false; } //restore label specific properties //text mText = itemElem.attribute( "labelText" ); //margin mMargin = itemElem.attribute( "margin" ).toDouble(); //Horizontal alignment mHAlignment = ( Qt::AlignmentFlag )( itemElem.attribute( "halign" ).toInt() ); //Vertical alignment mVAlignment = ( Qt::AlignmentFlag )( itemElem.attribute( "valign" ).toInt() ); //id mId = itemElem.attribute( "id", "" ); //font QDomNodeList labelFontList = itemElem.elementsByTagName( "LabelFont" ); if ( labelFontList.size() > 0 ) { QDomElement labelFontElem = labelFontList.at( 0 ).toElement(); mFont.fromString( labelFontElem.attribute( "description" ) ); } //font color QDomNodeList fontColorList = itemElem.elementsByTagName( "FontColor" ); if ( fontColorList.size() > 0 ) { QDomElement fontColorElem = fontColorList.at( 0 ).toElement(); int red = fontColorElem.attribute( "red", "0" ).toInt(); int green = fontColorElem.attribute( "green", "0" ).toInt(); int blue = fontColorElem.attribute( "blue", "0" ).toInt(); mFontColor = QColor( red, green, blue ); } else { mFontColor = QColor( 0, 0, 0 ); } //restore general composer item properties QDomNodeList composerItemList = itemElem.elementsByTagName( "ComposerItem" ); if ( composerItemList.size() > 0 ) { QDomElement composerItemElem = composerItemList.at( 0 ).toElement(); _readXML( composerItemElem, doc ); } emit itemChanged(); return true; }
bool QgsComposerTable::tableReadXML( const QDomElement& itemElem, const QDomDocument& doc ) { if ( itemElem.isNull() ) { return false; } mHeaderFont.fromString( itemElem.attribute( "headerFont", "" ) ); mHeaderFontColor = QgsSymbolLayerV2Utils::decodeColor( itemElem.attribute( "headerFontColor", "0,0,0,255" ) ); mHeaderHAlignment = QgsComposerTable::HeaderHAlignment( itemElem.attribute( "headerHAlignment", "0" ).toInt() ); mContentFont.fromString( itemElem.attribute( "contentFont", "" ) ); mContentFontColor = QgsSymbolLayerV2Utils::decodeColor( itemElem.attribute( "contentFontColor", "0,0,0,255" ) ); mLineTextDistance = itemElem.attribute( "lineTextDist", "1.0" ).toDouble(); mGridStrokeWidth = itemElem.attribute( "gridStrokeWidth", "0.5" ).toDouble(); mShowGrid = itemElem.attribute( "showGrid", "1" ).toInt(); //grid color if ( itemElem.hasAttribute( "gridColor" ) ) { mGridColor = QgsSymbolLayerV2Utils::decodeColor( itemElem.attribute( "gridColor", "0,0,0,255" ) ); } else { //old style grid color int gridRed = itemElem.attribute( "gridColorRed", "0" ).toInt(); int gridGreen = itemElem.attribute( "gridColorGreen", "0" ).toInt(); int gridBlue = itemElem.attribute( "gridColorBlue", "0" ).toInt(); int gridAlpha = itemElem.attribute( "gridColorAlpha", "255" ).toInt(); mGridColor = QColor( gridRed, gridGreen, gridBlue, gridAlpha ); } //restore column specifications qDeleteAll( mColumns ); mColumns.clear(); QDomNodeList columnsList = itemElem.elementsByTagName( "displayColumns" ); if ( columnsList.size() > 0 ) { QDomElement columnsElem = columnsList.at( 0 ).toElement(); QDomNodeList columnEntryList = columnsElem.elementsByTagName( "column" ); for ( int i = 0; i < columnEntryList.size(); ++i ) { QDomElement columnElem = columnEntryList.at( i ).toElement(); QgsComposerTableColumn* column = new QgsComposerTableColumn; column->readXML( columnElem ); mColumns.append( column ); } } //restore general composer item properties QDomNodeList composerItemList = itemElem.elementsByTagName( "ComposerItem" ); if ( composerItemList.size() > 0 ) { QDomElement composerItemElem = composerItemList.at( 0 ).toElement(); _readXML( composerItemElem, doc ); } return true; }
bool QgsComposerTableV2::readXML( const QDomElement &itemElem, const QDomDocument &doc, bool ignoreFrames ) { deleteFrames(); //first create the frames if ( !_readXML( itemElem, doc, ignoreFrames ) ) { return false; } if ( itemElem.isNull() ) { return false; } mEmptyTableMode = QgsComposerTableV2::EmptyTableMode( itemElem.attribute( "emptyTableMode", "0" ).toInt() ); mEmptyTableMessage = itemElem.attribute( "emptyTableMessage", tr( "No matching records" ) ); mShowEmptyRows = itemElem.attribute( "showEmptyRows", "0" ).toInt(); if ( !QgsFontUtils::setFromXmlChildNode( mHeaderFont, itemElem, "headerFontProperties" ) ) { mHeaderFont.fromString( itemElem.attribute( "headerFont", "" ) ); } mHeaderFontColor = QgsSymbolLayerV2Utils::decodeColor( itemElem.attribute( "headerFontColor", "0,0,0,255" ) ); mHeaderHAlignment = QgsComposerTableV2::HeaderHAlignment( itemElem.attribute( "headerHAlignment", "0" ).toInt() ); mHeaderMode = QgsComposerTableV2::HeaderMode( itemElem.attribute( "headerMode", "0" ).toInt() ); if ( !QgsFontUtils::setFromXmlChildNode( mContentFont, itemElem, "contentFontProperties" ) ) { mContentFont.fromString( itemElem.attribute( "contentFont", "" ) ); } mContentFontColor = QgsSymbolLayerV2Utils::decodeColor( itemElem.attribute( "contentFontColor", "0,0,0,255" ) ); mCellMargin = itemElem.attribute( "cellMargin", "1.0" ).toDouble(); mGridStrokeWidth = itemElem.attribute( "gridStrokeWidth", "0.5" ).toDouble(); mShowGrid = itemElem.attribute( "showGrid", "1" ).toInt(); mGridColor = QgsSymbolLayerV2Utils::decodeColor( itemElem.attribute( "gridColor", "0,0,0,255" ) ); mBackgroundColor = QgsSymbolLayerV2Utils::decodeColor( itemElem.attribute( "backgroundColor", "255,255,255,0" ) ); mWrapBehaviour = QgsComposerTableV2::WrapBehaviour( itemElem.attribute( "wrapBehaviour", "0" ).toInt() ); //restore column specifications qDeleteAll( mColumns ); mColumns.clear(); QDomNodeList columnsList = itemElem.elementsByTagName( "displayColumns" ); if ( columnsList.size() > 0 ) { QDomElement columnsElem = columnsList.at( 0 ).toElement(); QDomNodeList columnEntryList = columnsElem.elementsByTagName( "column" ); for ( int i = 0; i < columnEntryList.size(); ++i ) { QDomElement columnElem = columnEntryList.at( i ).toElement(); QgsComposerTableColumn* column = new QgsComposerTableColumn; column->readXML( columnElem ); mColumns.append( column ); } } return true; }
bool QgsComposerShape::readXML( const QDomElement& itemElem, const QDomDocument& doc ) { mShape = QgsComposerShape::Shape( itemElem.attribute( "shapeType", "0" ).toInt() ); mCornerRadius = itemElem.attribute( "cornerRadius", "0" ).toDouble(); //restore general composer item properties QDomNodeList composerItemList = itemElem.elementsByTagName( "ComposerItem" ); if ( composerItemList.size() > 0 ) { QDomElement composerItemElem = composerItemList.at( 0 ).toElement(); //rotation if ( composerItemElem.attribute( "rotation", "0" ).toDouble() != 0 ) { //check for old (pre 2.1) rotation attribute setItemRotation( composerItemElem.attribute( "rotation", "0" ).toDouble() ); } _readXML( composerItemElem, doc ); } QDomElement shapeStyleSymbolElem = itemElem.firstChildElement( "symbol" ); if ( !shapeStyleSymbolElem.isNull() ) { delete mShapeStyleSymbol; mShapeStyleSymbol = dynamic_cast<QgsFillSymbolV2*>( QgsSymbolLayerV2Utils::loadSymbol( shapeStyleSymbolElem ) ); } else { //upgrade project file from 2.0 to use symbolV2 styling delete mShapeStyleSymbol; QgsStringMap properties; properties.insert( "color", QgsSymbolLayerV2Utils::encodeColor( brush().color() ) ); if ( hasBackground() ) { properties.insert( "style", "solid" ); } else { properties.insert( "style", "no" ); } if ( hasFrame() ) { properties.insert( "style_border", "solid" ); } else { properties.insert( "style_border", "no" ); } properties.insert( "color_border", QgsSymbolLayerV2Utils::encodeColor( pen().color() ) ); properties.insert( "width_border", QString::number( pen().widthF() ) ); mShapeStyleSymbol = QgsFillSymbolV2::createSimple( properties ); } emit itemChanged(); return true; }
bool QgsComposerHtml::readXML( const QDomElement& itemElem, const QDomDocument& doc, bool ignoreFrames ) { deleteFrames(); QString urlString = itemElem.attribute( "url" ); if ( !urlString.isEmpty() ) { setUrl( QUrl( urlString ) ); } return _readXML( itemElem, doc, ignoreFrames ); }
void QgsSvgAnnotationItem::readXML( const QDomDocument& doc, const QDomElement& itemElem ) { QString filePath = QgsProject::instance()->readPath( itemElem.attribute( "file" ) ); setFilePath( filePath ); QDomElement annotationElem = itemElem.firstChildElement( "AnnotationItem" ); if ( !annotationElem.isNull() ) { _readXML( doc, annotationElem ); } }
void QgsTextAnnotationItem::readXML( const QDomDocument& doc, const QDomElement& itemElem ) { delete mDocument; mDocument = new QTextDocument; mDocument->setHtml( itemElem.attribute( "document", QObject::tr( "<html>QGIS rocks!</html>" ) ) ); QDomElement annotationElem = itemElem.firstChildElement( "AnnotationItem" ); if ( !annotationElem.isNull() ) { _readXML( doc, annotationElem ); } }
void QgsSingleCategoryDiagramRenderer::readXML( const QDomElement& elem ) { QDomElement categoryElem = elem.firstChildElement( "DiagramCategory" ); if ( categoryElem.isNull() ) { return; } mSettings.readXML( categoryElem ); _readXML( elem ); }
bool QgsComposerShape::readXML( const QDomElement& itemElem, const QDomDocument& doc ) { mShape = QgsComposerShape::Shape( itemElem.attribute( "shapeType", "0" ).toInt() ); //restore general composer item properties QDomNodeList composerItemList = itemElem.elementsByTagName( "ComposerItem" ); if ( composerItemList.size() > 0 ) { QDomElement composerItemElem = composerItemList.at( 0 ).toElement(); _readXML( composerItemElem, doc ); } emit itemChanged(); return true; }
bool QgsComposerFrame::readXML( const QDomElement& itemElem, const QDomDocument& doc ) { double x = itemElem.attribute( "sectionX" ).toDouble(); double y = itemElem.attribute( "sectionY" ).toDouble(); double width = itemElem.attribute( "sectionWidth" ).toDouble(); double height = itemElem.attribute( "sectionHeight" ).toDouble(); mSection = QRectF( x, y, width, height ); QDomElement composerItem = itemElem.firstChildElement( "ComposerItem" ); if ( composerItem.isNull() ) { return false; } return _readXML( composerItem, doc ); }
void QgsLinearlyInterpolatedDiagramRenderer::readXML( const QDomElement& elem ) { mLowerValue = elem.attribute( "lowerValue" ).toDouble(); mUpperValue = elem.attribute( "upperValue" ).toDouble(); mLowerSize.setWidth( elem.attribute( "lowerWidth" ).toDouble() ); mLowerSize.setHeight( elem.attribute( "lowerHeight" ).toDouble() ); mUpperSize.setWidth( elem.attribute( "upperWidth" ).toDouble() ); mUpperSize.setHeight( elem.attribute( "upperHeight" ).toDouble() ); mClassificationAttribute = elem.attribute( "classificationAttribute" ).toInt(); QDomElement settingsElem = elem.firstChildElement( "DiagramCategory" ); if ( !settingsElem.isNull() ) { mSettings.readXML( settingsElem ); } _readXML( elem ); }
bool QgsComposerHtml::readXML( const QDomElement& itemElem, const QDomDocument& doc, bool ignoreFrames ) { deleteFrames(); //first create the frames if ( !_readXML( itemElem, doc, ignoreFrames ) ) { return false; } //then load the set url QString urlString = itemElem.attribute( "url" ); if ( !urlString.isEmpty() ) { setUrl( QUrl( urlString ) ); } return true; }
bool QgsComposerHtml::readXML( const QDomElement& itemElem, const QDomDocument& doc, bool ignoreFrames ) { deleteFrames(); //first create the frames if ( !_readXML( itemElem, doc, ignoreFrames ) ) { return false; } mUseSmartBreaks = itemElem.attribute( "useSmartBreaks", "true" ) == "true" ? true : false; mMaxBreakDistance = itemElem.attribute( "maxBreakDistance", "10" ).toDouble(); //finally load the set url QString urlString = itemElem.attribute( "url" ); if ( !urlString.isEmpty() ) { setUrl( QUrl( urlString ) ); } return true; }
void QgsLinearlyInterpolatedDiagramRenderer::readXML( const QDomElement& elem, const QgsVectorLayer* layer ) { mInterpolationSettings.lowerValue = elem.attribute( "lowerValue" ).toDouble(); mInterpolationSettings.upperValue = elem.attribute( "upperValue" ).toDouble(); mInterpolationSettings.lowerSize.setWidth( elem.attribute( "lowerWidth" ).toDouble() ); mInterpolationSettings.lowerSize.setHeight( elem.attribute( "lowerHeight" ).toDouble() ); mInterpolationSettings.upperSize.setWidth( elem.attribute( "upperWidth" ).toDouble() ); mInterpolationSettings.upperSize.setHeight( elem.attribute( "upperHeight" ).toDouble() ); mInterpolationSettings.classificationAttributeIsExpression = elem.hasAttribute( "classificationAttributeExpression" ); if ( mInterpolationSettings.classificationAttributeIsExpression ) { mInterpolationSettings.classificationAttributeExpression = elem.attribute( "classificationAttributeExpression" ); } else { mInterpolationSettings.classificationAttribute = elem.attribute( "classificationAttribute" ).toInt(); } QDomElement settingsElem = elem.firstChildElement( "DiagramCategory" ); if ( !settingsElem.isNull() ) { mSettings.readXML( settingsElem, layer ); } _readXML( elem, layer ); }
bool QgsComposerPicture::readXML( const QDomElement& itemElem, const QDomDocument& doc ) { if ( itemElem.isNull() ) { return false; } QDomNodeList composerItemList = itemElem.elementsByTagName( "ComposerItem" ); if ( composerItemList.size() > 0 ) { _readXML( composerItemList.at( 0 ).toElement(), doc ); } mSvgCacheUpToDate = false; mDefaultSvgSize = QSize( 0, 0 ); mCachedDpi = 0; QString fileName = itemElem.attribute( "file" ); setPictureFile( fileName ); mRotation = itemElem.attribute( "rotation" ).toDouble(); return true; }
bool QgsComposerShape::readXML( const QDomElement& itemElem, const QDomDocument& doc ) { mShape = QgsComposerShape::Shape( itemElem.attribute( "shapeType", "0" ).toInt() ); mCornerRadius = itemElem.attribute( "cornerRadius", "0" ).toDouble(); //restore general composer item properties QDomNodeList composerItemList = itemElem.elementsByTagName( "ComposerItem" ); if ( composerItemList.size() > 0 ) { QDomElement composerItemElem = composerItemList.at( 0 ).toElement(); //rotation if ( composerItemElem.attribute( "rotation", "0" ).toDouble() != 0 ) { //check for old (pre 2.1) rotation attribute setItemRotation( composerItemElem.attribute( "rotation", "0" ).toDouble() ); } _readXML( composerItemElem, doc ); } QDomElement shapeStyleSymbolElem = itemElem.firstChildElement( "symbol" ); if ( !shapeStyleSymbolElem.isNull() ) { delete mShapeStyleSymbol; mShapeStyleSymbol = dynamic_cast<QgsFillSymbolV2*>( QgsSymbolLayerV2Utils::loadSymbol( shapeStyleSymbolElem ) ); } else { //upgrade project file from 2.0 to use symbolV2 styling delete mShapeStyleSymbol; QgsStringMap properties; properties.insert( "color", QgsSymbolLayerV2Utils::encodeColor( brush().color() ) ); if ( hasBackground() ) { properties.insert( "style", "solid" ); } else { properties.insert( "style", "no" ); } if ( hasFrame() ) { properties.insert( "style_border", "solid" ); } else { properties.insert( "style_border", "no" ); } properties.insert( "color_border", QgsSymbolLayerV2Utils::encodeColor( pen().color() ) ); properties.insert( "width_border", QString::number( pen().widthF() ) ); //for pre 2.0 projects, shape colour and outline were specified in a different element... QDomNodeList outlineColorList = itemElem.elementsByTagName( "OutlineColor" ); if ( outlineColorList.size() > 0 ) { QDomElement frameColorElem = outlineColorList.at( 0 ).toElement(); bool redOk, greenOk, blueOk, alphaOk, widthOk; int penRed, penGreen, penBlue, penAlpha; double penWidth; penWidth = itemElem.attribute( "outlineWidth" ).toDouble( &widthOk ); penRed = frameColorElem.attribute( "red" ).toDouble( &redOk ); penGreen = frameColorElem.attribute( "green" ).toDouble( &greenOk ); penBlue = frameColorElem.attribute( "blue" ).toDouble( &blueOk ); penAlpha = frameColorElem.attribute( "alpha" ).toDouble( &alphaOk ); if ( redOk && greenOk && blueOk && alphaOk && widthOk ) { properties.insert( "color_border", QgsSymbolLayerV2Utils::encodeColor( QColor( penRed, penGreen, penBlue, penAlpha ) ) ); properties.insert( "width_border", QString::number( penWidth ) ); } } QDomNodeList fillColorList = itemElem.elementsByTagName( "FillColor" ); if ( fillColorList.size() > 0 ) { QDomElement fillColorElem = fillColorList.at( 0 ).toElement(); bool redOk, greenOk, blueOk, alphaOk; int fillRed, fillGreen, fillBlue, fillAlpha; fillRed = fillColorElem.attribute( "red" ).toDouble( &redOk ); fillGreen = fillColorElem.attribute( "green" ).toDouble( &greenOk ); fillBlue = fillColorElem.attribute( "blue" ).toDouble( &blueOk ); fillAlpha = fillColorElem.attribute( "alpha" ).toDouble( &alphaOk ); if ( redOk && greenOk && blueOk && alphaOk ) { properties.insert( "color", QgsSymbolLayerV2Utils::encodeColor( QColor( fillRed, fillGreen, fillBlue, fillAlpha ) ) ); properties.insert( "style", "solid" ); } } if ( itemElem.hasAttribute( "transparentFill" ) ) { //old style (pre 2.0) of specifying that shapes had no fill bool hasOldTransparentFill = itemElem.attribute( "transparentFill", "0" ).toInt(); if ( hasOldTransparentFill ) { properties.insert( "style", "no" ); } } mShapeStyleSymbol = QgsFillSymbolV2::createSimple( properties ); } emit itemChanged(); return true; }
bool QgsComposerScaleBar::readXML( const QDomElement& itemElem, const QDomDocument& doc ) { if ( itemElem.isNull() ) { return false; } mHeight = itemElem.attribute( "height", "5.0" ).toDouble(); mLabelBarSpace = itemElem.attribute( "labelBarSpace", "3.0" ).toDouble(); mBoxContentSpace = itemElem.attribute( "boxContentSpace", "1.0" ).toDouble(); mNumSegments = itemElem.attribute( "numSegments", "2" ).toInt(); mNumSegmentsLeft = itemElem.attribute( "numSegmentsLeft", "0" ).toInt(); mNumUnitsPerSegment = itemElem.attribute( "numUnitsPerSegment", "1.0" ).toDouble(); mSegmentSizeMode = static_cast<SegmentSizeMode>( itemElem.attribute( "segmentSizeMode", "0" ).toInt() ); mMinBarWidth = itemElem.attribute( "minBarWidth", "50" ).toInt(); mMaxBarWidth = itemElem.attribute( "maxBarWidth", "150" ).toInt(); mSegmentMillimeters = itemElem.attribute( "segmentMillimeters", "0.0" ).toDouble(); mNumMapUnitsPerScaleBarUnit = itemElem.attribute( "numMapUnitsPerScaleBarUnit", "1.0" ).toDouble(); mPen.setWidthF( itemElem.attribute( "outlineWidth", "1.0" ).toDouble() ); mUnitLabeling = itemElem.attribute( "unitLabel" ); mLineJoinStyle = QgsSymbolLayerV2Utils::decodePenJoinStyle( itemElem.attribute( "lineJoinStyle", "miter" ) ); mPen.setJoinStyle( mLineJoinStyle ); mLineCapStyle = QgsSymbolLayerV2Utils::decodePenCapStyle( itemElem.attribute( "lineCapStyle", "square" ) ); mPen.setCapStyle( mLineCapStyle ); QString fontString = itemElem.attribute( "font", "" ); if ( !fontString.isEmpty() ) { mFont.fromString( fontString ); } //colors //fill color QDomNodeList fillColorList = itemElem.elementsByTagName( "fillColor" ); if ( fillColorList.size() > 0 ) { QDomElement fillColorElem = fillColorList.at( 0 ).toElement(); bool redOk, greenOk, blueOk, alphaOk; int fillRed, fillGreen, fillBlue, fillAlpha; fillRed = fillColorElem.attribute( "red" ).toDouble( &redOk ); fillGreen = fillColorElem.attribute( "green" ).toDouble( &greenOk ); fillBlue = fillColorElem.attribute( "blue" ).toDouble( &blueOk ); fillAlpha = fillColorElem.attribute( "alpha" ).toDouble( &alphaOk ); if ( redOk && greenOk && blueOk && alphaOk ) { mBrush.setColor( QColor( fillRed, fillGreen, fillBlue, fillAlpha ) ); } } else { mBrush.setColor( QColor( itemElem.attribute( "brushColor", "#000000" ) ) ); } //fill color 2 QDomNodeList fillColor2List = itemElem.elementsByTagName( "fillColor2" ); if ( fillColor2List.size() > 0 ) { QDomElement fillColor2Elem = fillColor2List.at( 0 ).toElement(); bool redOk, greenOk, blueOk, alphaOk; int fillRed, fillGreen, fillBlue, fillAlpha; fillRed = fillColor2Elem.attribute( "red" ).toDouble( &redOk ); fillGreen = fillColor2Elem.attribute( "green" ).toDouble( &greenOk ); fillBlue = fillColor2Elem.attribute( "blue" ).toDouble( &blueOk ); fillAlpha = fillColor2Elem.attribute( "alpha" ).toDouble( &alphaOk ); if ( redOk && greenOk && blueOk && alphaOk ) { mBrush2.setColor( QColor( fillRed, fillGreen, fillBlue, fillAlpha ) ); } } else { mBrush2.setColor( QColor( itemElem.attribute( "brush2Color", "#ffffff" ) ) ); } //stroke color QDomNodeList strokeColorList = itemElem.elementsByTagName( "strokeColor" ); if ( strokeColorList.size() > 0 ) { QDomElement strokeColorElem = strokeColorList.at( 0 ).toElement(); bool redOk, greenOk, blueOk, alphaOk; int strokeRed, strokeGreen, strokeBlue, strokeAlpha; strokeRed = strokeColorElem.attribute( "red" ).toDouble( &redOk ); strokeGreen = strokeColorElem.attribute( "green" ).toDouble( &greenOk ); strokeBlue = strokeColorElem.attribute( "blue" ).toDouble( &blueOk ); strokeAlpha = strokeColorElem.attribute( "alpha" ).toDouble( &alphaOk ); if ( redOk && greenOk && blueOk && alphaOk ) { mPen.setColor( QColor( strokeRed, strokeGreen, strokeBlue, strokeAlpha ) ); } } else { mPen.setColor( QColor( itemElem.attribute( "penColor", "#000000" ) ) ); } //font color QDomNodeList textColorList = itemElem.elementsByTagName( "textColor" ); if ( textColorList.size() > 0 ) { QDomElement textColorElem = textColorList.at( 0 ).toElement(); bool redOk, greenOk, blueOk, alphaOk; int textRed, textGreen, textBlue, textAlpha; textRed = textColorElem.attribute( "red" ).toDouble( &redOk ); textGreen = textColorElem.attribute( "green" ).toDouble( &greenOk ); textBlue = textColorElem.attribute( "blue" ).toDouble( &blueOk ); textAlpha = textColorElem.attribute( "alpha" ).toDouble( &alphaOk ); if ( redOk && greenOk && blueOk && alphaOk ) { mFontColor = QColor( textRed, textGreen, textBlue, textAlpha ); } } else { mFontColor.setNamedColor( itemElem.attribute( "fontColor", "#000000" ) ); } //style delete mStyle; mStyle = 0; QString styleString = itemElem.attribute( "style", "" ); setStyle( tr( styleString.toLocal8Bit().data() ) ); mUnits = ( ScaleBarUnits )itemElem.attribute( "units" ).toInt(); mAlignment = ( Alignment )( itemElem.attribute( "alignment", "0" ).toInt() ); //map int mapId = itemElem.attribute( "mapId", "-1" ).toInt(); if ( mapId >= 0 ) { const QgsComposerMap* composerMap = mComposition->getComposerMapById( mapId ); mComposerMap = composerMap; if ( mComposerMap ) { connect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( updateSegmentSize() ) ); connect( mComposerMap, SIGNAL( destroyed( QObject* ) ), this, SLOT( invalidateCurrentMap() ) ); } } updateSegmentSize(); //restore general composer item properties QDomNodeList composerItemList = itemElem.elementsByTagName( "ComposerItem" ); if ( composerItemList.size() > 0 ) { QDomElement composerItemElem = composerItemList.at( 0 ).toElement(); _readXML( composerItemElem, doc ); } return true; }
/// /// readFile: Reads a local file on disk /// void Parser::readFile(const std::string &fileName){ _fileName = fileName; ////////////////////////////////////////////////////////////////////////////// // // First find out what kind of file it is using the fileTypeClassifier class: // ////////////////////////////////////////////////////////////////////////////// // // FileTypeClassifier is now a local instance only: // FileTypeClassifier fileTypeClassifier; if(!fileTypeClassifier.setFileToTest(_fileName.c_str())){ Warning("In Parser::readFile(), File %s cannot be located or read and will be ignored", _fileName.c_str() ); return; } _fileType = fileTypeClassifier.classify(); _fileTypeName = fileTypeClassifier.classifyByName(); std::string fileData; Compressor newCompressor; // // Message for user: // std::cout << "Parser::readFile(): Opening a(n) " << _fileTypeName << " file ...\n"; // // If the file is compressed, decompress it into a std::string. // Otherwise, read it into a std::string. // if( _fileType==FileTypeClassifier::PKZIP || _fileType==FileTypeClassifier::GZIP || _fileType==FileTypeClassifier::BZIP2 ) { // // Decompress into a std::string : // std::cout << "Parser::readFile(): Decompressing " << _fileTypeName << " file ...\n"; fileData = newCompressor.decompress(_fileName); } else { // // Read into a std::string : // fileData = _stringify(_fileName); } //////////////////////////////////////// // // Now process the fileData std::string: // //////////////////////////////////////// if( _xmlTagManager.discoverFormat(fileData) ) { // // fileData are in a recognized XML format: // std::cout << "Reading file data in " << _xmlTagManager.getFormatName() << " format ...\n"; _readXML(fileData); } else { // // If it is not an XML file, then it is a flat file. // Two flat file formats are recognized: // // (1) Original Madeline format (2) Delimited format // // If there is only 1 block, then it is a tab delimited file. // If there are 2 blocks, it is in Madeline format: // int blockCount = _determineNumberOfBlocks( fileData ); if( blockCount == 1) { std::cout << "Reading file data in delimited format ...\n"; _readDelimited(fileData); } else if( blockCount == 2) { std::cout << "Reading file data in Madeline flat file format ...\n"; _readMadeline(fileData); } else { Warning("Parser::readFile(): Sorry, the format of the file %s could not be determined and will be ignored.", _fileName.c_str() ); } } }
bool QgsComposerArrow::readXML( const QDomElement& itemElem, const QDomDocument& doc ) { mArrowHeadWidth = itemElem.attribute( "arrowHeadWidth", "2.0" ).toDouble(); mArrowHeadFillColor = QgsSymbolLayerV2Utils::decodeColor( itemElem.attribute( "arrowHeadFillColor", "0,0,0,255" ) ); mArrowHeadOutlineColor = QgsSymbolLayerV2Utils::decodeColor( itemElem.attribute( "arrowHeadOutlineColor", "0,0,0,255" ) ); mArrowHeadOutlineWidth = itemElem.attribute( "outlineWidth", "1.0" ).toDouble(); setStartMarker( itemElem.attribute( "startMarkerFile", "" ) ); setEndMarker( itemElem.attribute( "endMarkerFile", "" ) ); mMarkerMode = QgsComposerArrow::MarkerMode( itemElem.attribute( "markerMode", "0" ).toInt() ); //if bounds behaviour version is not set, default to 2.2 behaviour mBoundsBehaviour = itemElem.attribute( "boundsBehaviourVersion", "22" ).toInt(); //arrow style QDomElement styleElem = itemElem.firstChildElement( "lineStyle" ); if ( !styleElem.isNull() ) { QDomElement lineStyleElem = styleElem.firstChildElement( "symbol" ); if ( !lineStyleElem.isNull() ) { delete mLineSymbol; mLineSymbol = QgsSymbolLayerV2Utils::loadSymbol<QgsLineSymbolV2>( lineStyleElem ); } } else { //old project file, read arrow width and color delete mLineSymbol; QgsStringMap properties; properties.insert( "width", itemElem.attribute( "outlineWidth", "1.0" ) ); if ( mBoundsBehaviour == 22 ) { //if arrow was created in versions prior to 2.4, use the old rendering style properties.insert( "capstyle", "flat" ); } else { properties.insert( "capstyle", "square" ); } int red = 0; int blue = 0; int green = 0; int alpha = 255; QDomNodeList arrowColorList = itemElem.elementsByTagName( "ArrowColor" ); if ( arrowColorList.size() > 0 ) { QDomElement arrowColorElem = arrowColorList.at( 0 ).toElement(); red = arrowColorElem.attribute( "red", "0" ).toInt(); green = arrowColorElem.attribute( "green", "0" ).toInt(); blue = arrowColorElem.attribute( "blue", "0" ).toInt(); alpha = arrowColorElem.attribute( "alpha", "255" ).toInt(); mArrowHeadFillColor = QColor( red, green, blue, alpha ); mArrowHeadOutlineColor = QColor( red, green, blue, alpha ); } properties.insert( "color", QString( "%1,%2,%3,%4" ).arg( red ).arg( green ).arg( blue ).arg( alpha ) ); mLineSymbol = QgsLineSymbolV2::createSimple( properties ); } mPen.setColor( mArrowHeadOutlineColor ); mPen.setWidthF( mArrowHeadOutlineWidth ); mBrush.setColor( mArrowHeadFillColor ); //restore general composer item properties //needs to be before start point / stop point because setSceneRect() QDomNodeList composerItemList = itemElem.elementsByTagName( "ComposerItem" ); if ( composerItemList.size() > 0 ) { QDomElement composerItemElem = composerItemList.at( 0 ).toElement(); _readXML( composerItemElem, doc ); } //start point QDomNodeList startPointList = itemElem.elementsByTagName( "StartPoint" ); if ( startPointList.size() > 0 ) { QDomElement startPointElem = startPointList.at( 0 ).toElement(); mStartPoint.setX( startPointElem.attribute( "x", "0.0" ).toDouble() ); mStartPoint.setY( startPointElem.attribute( "y", "0.0" ).toDouble() ); } //stop point QDomNodeList stopPointList = itemElem.elementsByTagName( "StopPoint" ); if ( stopPointList.size() > 0 ) { QDomElement stopPointElem = stopPointList.at( 0 ).toElement(); mStopPoint.setX( stopPointElem.attribute( "x", "0.0" ).toDouble() ); mStopPoint.setY( stopPointElem.attribute( "y", "0.0" ).toDouble() ); } mStartXIdx = mStopPoint.x() < mStartPoint.x(); mStartYIdx = mStopPoint.y() < mStartPoint.y(); adaptItemSceneRect(); emit itemChanged(); return true; }
bool QgsComposerLegend::readXML( const QDomElement& itemElem, const QDomDocument& doc ) { if ( itemElem.isNull() ) { return false; } //read general properties mTitle = itemElem.attribute( "title" ); //title font QString titleFontString = itemElem.attribute( "titleFont" ); if ( !titleFontString.isEmpty() ) { mTitleFont.fromString( titleFontString ); } //group font QString groupFontString = itemElem.attribute( "groupFont" ); if ( !groupFontString.isEmpty() ) { mGroupFont.fromString( groupFontString ); } //layer font QString layerFontString = itemElem.attribute( "layerFont" ); if ( !layerFontString.isEmpty() ) { mLayerFont.fromString( layerFontString ); } //item font QString itemFontString = itemElem.attribute( "itemFont" ); if ( !itemFontString.isEmpty() ) { mItemFont.fromString( itemFontString ); } //spaces mBoxSpace = itemElem.attribute( "boxSpace", "2.0" ).toDouble(); mLayerSpace = itemElem.attribute( "layerSpace", "3.0" ).toDouble(); mSymbolSpace = itemElem.attribute( "symbolSpace", "2.0" ).toDouble(); mIconLabelSpace = itemElem.attribute( "iconLabelSpace", "2.0" ).toDouble(); mSymbolWidth = itemElem.attribute( "symbolWidth", "7.0" ).toDouble(); mSymbolHeight = itemElem.attribute( "symbolHeight", "14.0" ).toDouble(); //composer map if ( !itemElem.attribute( "map" ).isEmpty() ) { mComposerMap = mComposition->getComposerMapById( itemElem.attribute( "map" ).toInt() ); } //read model properties QDomNodeList modelNodeList = itemElem.elementsByTagName( "Model" ); if ( modelNodeList.size() > 0 ) { QDomElement modelElem = modelNodeList.at( 0 ).toElement(); mLegendModel.readXML( modelElem, doc ); } //restore general composer item properties QDomNodeList composerItemList = itemElem.elementsByTagName( "ComposerItem" ); if ( composerItemList.size() > 0 ) { QDomElement composerItemElem = composerItemList.at( 0 ).toElement(); _readXML( composerItemElem, doc ); } emit itemChanged(); return true; }
bool QgsComposerLegend::readXML( const QDomElement& itemElem, const QDomDocument& doc ) { if ( itemElem.isNull() ) { return false; } //read general properties mSettings.setTitle( itemElem.attribute( "title" ) ); if ( !itemElem.attribute( "titleAlignment" ).isEmpty() ) { mSettings.setTitleAlignment(( Qt::AlignmentFlag )itemElem.attribute( "titleAlignment" ).toInt() ); } int colCount = itemElem.attribute( "columnCount", "1" ).toInt(); if ( colCount < 1 ) colCount = 1; mSettings.setColumnCount( colCount ); mSettings.setSplitLayer( itemElem.attribute( "splitLayer", "0" ).toInt() == 1 ); mSettings.setEqualColumnWidth( itemElem.attribute( "equalColumnWidth", "0" ).toInt() == 1 ); QDomNodeList stylesNodeList = itemElem.elementsByTagName( "styles" ); if ( stylesNodeList.size() > 0 ) { QDomNode stylesNode = stylesNodeList.at( 0 ); for ( int i = 0; i < stylesNode.childNodes().size(); i++ ) { QDomElement styleElem = stylesNode.childNodes().at( i ).toElement(); QgsComposerLegendStyle style; style.readXML( styleElem, doc ); QString name = styleElem.attribute( "name" ); QgsComposerLegendStyle::Style s; if ( name == "title" ) s = QgsComposerLegendStyle::Title; else if ( name == "group" ) s = QgsComposerLegendStyle::Group; else if ( name == "subgroup" ) s = QgsComposerLegendStyle::Subgroup; else if ( name == "symbol" ) s = QgsComposerLegendStyle::Symbol; else if ( name == "symbolLabel" ) s = QgsComposerLegendStyle::SymbolLabel; else continue; setStyle( s, style ); } } //font color QColor fontClr; fontClr.setNamedColor( itemElem.attribute( "fontColor", "#000000" ) ); mSettings.setFontColor( fontClr ); //spaces mSettings.setBoxSpace( itemElem.attribute( "boxSpace", "2.0" ).toDouble() ); mSettings.setColumnSpace( itemElem.attribute( "columnSpace", "2.0" ).toDouble() ); mSettings.setSymbolSize( QSizeF( itemElem.attribute( "symbolWidth", "7.0" ).toDouble(), itemElem.attribute( "symbolHeight", "14.0" ).toDouble() ) ); mSettings.setWmsLegendSize( QSizeF( itemElem.attribute( "wmsLegendWidth", "50" ).toDouble(), itemElem.attribute( "wmsLegendHeight", "25" ).toDouble() ) ); mSettings.setWrapChar( itemElem.attribute( "wrapChar" ) ); //composer map if ( !itemElem.attribute( "map" ).isEmpty() ) { mComposerMap = mComposition->getComposerMapById( itemElem.attribute( "map" ).toInt() ); } //read model properties QDomNodeList modelNodeList = itemElem.elementsByTagName( "Model" ); if ( modelNodeList.size() > 0 ) { QDomElement modelElem = modelNodeList.at( 0 ).toElement(); mLegendModel.readXML( modelElem, doc ); } //restore general composer item properties QDomNodeList composerItemList = itemElem.elementsByTagName( "ComposerItem" ); if ( composerItemList.size() > 0 ) { QDomElement composerItemElem = composerItemList.at( 0 ).toElement(); _readXML( composerItemElem, doc ); } // < 2.0 projects backward compatibility >>>>> //title font QString titleFontString = itemElem.attribute( "titleFont" ); if ( !titleFontString.isEmpty() ) { rstyle( QgsComposerLegendStyle::Title ).rfont().fromString( titleFontString ); } //group font QString groupFontString = itemElem.attribute( "groupFont" ); if ( !groupFontString.isEmpty() ) { rstyle( QgsComposerLegendStyle::Group ).rfont().fromString( groupFontString ); } //layer font QString layerFontString = itemElem.attribute( "layerFont" ); if ( !layerFontString.isEmpty() ) { rstyle( QgsComposerLegendStyle::Subgroup ).rfont().fromString( layerFontString ); } //item font QString itemFontString = itemElem.attribute( "itemFont" ); if ( !itemFontString.isEmpty() ) { rstyle( QgsComposerLegendStyle::SymbolLabel ).rfont().fromString( itemFontString ); } if ( !itemElem.attribute( "groupSpace" ).isEmpty() ) { rstyle( QgsComposerLegendStyle::Group ).setMargin( QgsComposerLegendStyle::Top, itemElem.attribute( "groupSpace", "3.0" ).toDouble() ); } if ( !itemElem.attribute( "layerSpace" ).isEmpty() ) { rstyle( QgsComposerLegendStyle::Subgroup ).setMargin( QgsComposerLegendStyle::Top, itemElem.attribute( "layerSpace", "3.0" ).toDouble() ); } if ( !itemElem.attribute( "symbolSpace" ).isEmpty() ) { rstyle( QgsComposerLegendStyle::Symbol ).setMargin( QgsComposerLegendStyle::Top, itemElem.attribute( "symbolSpace", "2.0" ).toDouble() ); rstyle( QgsComposerLegendStyle::SymbolLabel ).setMargin( QgsComposerLegendStyle::Top, itemElem.attribute( "symbolSpace", "2.0" ).toDouble() ); } // <<<<<<< < 2.0 projects backward compatibility emit itemChanged(); return true; }