// ---------------------------------------------------------------------------- void ctkVTKChartViewPrivate::init() { Q_Q(ctkVTKChartView); #if CTK_USE_QVTKOPENGLWIDGET q->SetRenderWindow(this->RenderWindow); this->ContextView->SetRenderWindow(this->RenderWindow); #endif this->ContextView->SetInteractor(q->GetInteractor()); q->SetRenderWindow(this->ContextView->GetRenderWindow()); // low def for now (faster) //q->GetRenderWindow()->SetMultiSamples(0); //vtkOpenGLContextDevice2D::SafeDownCast(this->ContextView->GetContext()->GetDevice()) // ->SetStringRendererToQt(); #ifndef Q_WS_X11 q->GetRenderWindow()->SetLineSmoothing(true); #endif this->Chart->SetActionToButton(vtkChart::PAN, vtkContextMouseEvent::MIDDLE_BUTTON); this->Chart->SetActionToButton(vtkChart::SELECT, vtkContextMouseEvent::RIGHT_BUTTON); q->qvtkConnect(q->chart()->GetAxis(vtkAxis::BOTTOM),vtkCommand::ModifiedEvent, q, SIGNAL(extentChanged())); q->qvtkConnect(q->chart()->GetAxis(vtkAxis::LEFT),vtkCommand::ModifiedEvent, q, SIGNAL(extentChanged())); }
void QgsComposerAttributeTable::setComposerMap( const QgsComposerMap* map ) { if ( mComposerMap ) { QObject::disconnect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( repaint() ) ); } mComposerMap = map; if ( mComposerMap ) { QObject::connect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( repaint() ) ); } }
/** Sets extent, the max rendering geometry of the plane */ void cwGLGridPlane::setExtent(double extent) { if(Extent != extent) { Extent = extent; updateModelMatrix(); emit extentChanged(); } }
void QgsComposerScaleBar::setComposerMap( const QgsComposerMap* map ) { disconnect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( updateSegmentSize() ) ); disconnect( mComposerMap, SIGNAL( destroyed( QObject* ) ), this, SLOT( invalidateCurrentMap() ) ); mComposerMap = map; if ( !map ) { return; } connect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( updateSegmentSize() ) ); connect( mComposerMap, SIGNAL( destroyed( QObject* ) ), this, SLOT( invalidateCurrentMap() ) ); refreshSegmentMillimeters(); }
void QgsExtentGroupBox::setOutputExtent( const QgsRectangle &r, const QgsCoordinateReferenceSystem &srcCrs, ExtentState state ) { QgsRectangle extent; if ( mOutputCrs == srcCrs ) { extent = r; } else { try { QgsCoordinateTransform ct( srcCrs, mOutputCrs ); extent = ct.transformBoundingBox( r ); } catch ( QgsCsException & ) { // can't reproject extent = r; } } mXMinLineEdit->setText( QgsRasterBlock::printValue( extent.xMinimum() ) ); mXMaxLineEdit->setText( QgsRasterBlock::printValue( extent.xMaximum() ) ); mYMinLineEdit->setText( QgsRasterBlock::printValue( extent.yMinimum() ) ); mYMaxLineEdit->setText( QgsRasterBlock::printValue( extent.yMaximum() ) ); mExtentState = state; if ( isCheckable() && !isChecked() ) setChecked( true ); updateTitle(); emit extentChanged( extent ); }
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; }
void QgsExtentGroupBox::setOutputExtentFromLineEdit() { mExtentState = UserExtent; updateTitle(); emit extentChanged( outputExtent() ); }
// ---------------------------------------------------------------------------- void ctkVTKVolumePropertyWidgetPrivate::setupUi(QWidget* widget) { Q_Q(ctkVTKVolumePropertyWidget); Q_ASSERT(q == widget); this->Ui_ctkVTKVolumePropertyWidget::setupUi(widget); double validBounds[4] = {VTK_DOUBLE_MIN, VTK_DOUBLE_MAX, 0., 1.}; this->ScalarOpacityWidget->view()->setValidBounds(validBounds); this->ScalarColorWidget->view()->setValidBounds(validBounds); this->GradientWidget->view()->setValidBounds(validBounds); QObject::connect(this->ScalarOpacityWidget->view(), SIGNAL(extentChanged()), q, SIGNAL(chartsExtentChanged())); this->ScalarOpacityWidget->view()->addCompositeFunction(0, 0, true, true); vtkCompositeControlPointsItem* composite = vtkCompositeControlPointsItem::SafeDownCast( this->ScalarOpacityWidget->view()->opacityFunctionPlots()[1]); composite->SetColorFill(true); composite->SetPointsFunction(vtkCompositeControlPointsItem::OpacityPointsFunction); this->ScalarColorWidget->view()->addColorTransferFunction(0); this->GradientWidget->view()->addPiecewiseFunction(0); this->ShowOpacityThresholdWidgetButton = new QToolButton; this->ShowOpacityThresholdWidgetButton->setIcon( QIcon(":Icons/threshold.png")); this->ShowOpacityThresholdWidgetButton->setCheckable(true); this->ShowOpacityThresholdWidgetButton->setAutoRaise(true); QObject::connect(this->ShowOpacityThresholdWidgetButton, SIGNAL(toggled(bool)), q, SLOT(onThresholdOpacityToggled(bool))); this->ScalarOpacityWidget->addExtraWidget( this->ShowOpacityThresholdWidgetButton); this->ScalarOpacityThresholdWidget->setVisible(false); QObject::connect(this->ScalarOpacityWidget, SIGNAL(axesModified()), q, SLOT(onAxesModified()), Qt::QueuedConnection); QObject::connect(this->ScalarColorWidget, SIGNAL(axesModified()), q, SLOT(onAxesModified()), Qt::QueuedConnection); QObject::connect(this->GradientWidget, SIGNAL(axesModified()), q, SLOT(onAxesModified()), Qt::QueuedConnection); this->GradientGroupBox->setCollapsed(true); this->AdvancedGroupBox->setCollapsed(true); QObject::connect(this->InterpolationComboBox, SIGNAL(currentIndexChanged(int)), q, SLOT(setInterpolationMode(int))); QObject::connect(this->ShadeCheckBox, SIGNAL(toggled(bool)), q, SLOT(setShade(bool))); QObject::connect(this->MaterialPropertyWidget, SIGNAL(ambientChanged(double)), q, SLOT(setAmbient(double))); QObject::connect(this->MaterialPropertyWidget, SIGNAL(diffuseChanged(double)), q, SLOT(setDiffuse(double))); QObject::connect(this->MaterialPropertyWidget, SIGNAL(specularChanged(double)), q, SLOT(setSpecular(double))); QObject::connect(this->MaterialPropertyWidget, SIGNAL(specularPowerChanged(double)), q, SLOT(setSpecularPower(double))); }
void QgsExtentGroupBox::groupBoxClicked() { if ( !isCheckable() ) return; updateTitle(); // output extent just went from null to something (or vice versa) emit extentChanged( outputExtent() ); }
void QgsComposerScaleBar::invalidateCurrentMap() { if ( !mComposerMap ) { return; } disconnect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( updateSegmentSize() ) ); disconnect( mComposerMap, SIGNAL( destroyed( QObject* ) ), this, SLOT( invalidateCurrentMap() ) ); mComposerMap = 0; }
void QgsComposerAttributeTable::setComposerMap( const QgsComposerMap* map ) { if ( map == mComposerMap ) { return; } if ( mComposerMap ) { //disconnect from previous map QObject::disconnect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( refreshAttributes() ) ); } mComposerMap = map; if ( mComposerMap ) { //listen out for extent changes in linked map QObject::connect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( refreshAttributes() ) ); } refreshAttributes(); }
void QgsExtentGroupBox::setOutputExtent( const QgsRectangle &r, const QgsCoordinateReferenceSystem &srcCrs, ExtentState state ) { QgsRectangle extent; if ( mOutputCrs == srcCrs ) { extent = r; } else { try { QgsCoordinateTransform ct( srcCrs, mOutputCrs, QgsProject::instance() ); extent = ct.transformBoundingBox( r ); } catch ( QgsCsException & ) { // can't reproject extent = r; } } int decimals = 4; switch ( mOutputCrs.mapUnits() ) { case QgsUnitTypes::DistanceDegrees: case QgsUnitTypes::DistanceUnknownUnit: decimals = 9; break; case QgsUnitTypes::DistanceMeters: case QgsUnitTypes::DistanceKilometers: case QgsUnitTypes::DistanceFeet: case QgsUnitTypes::DistanceNauticalMiles: case QgsUnitTypes::DistanceYards: case QgsUnitTypes::DistanceMiles: case QgsUnitTypes::DistanceCentimeters: case QgsUnitTypes::DistanceMillimeters: decimals = 4; break; } mXMinLineEdit->setText( QString::number( extent.xMinimum(), 'f', decimals ) ); mXMaxLineEdit->setText( QString::number( extent.xMaximum(), 'f', decimals ) ); mYMinLineEdit->setText( QString::number( extent.yMinimum(), 'f', decimals ) ); mYMaxLineEdit->setText( QString::number( extent.yMaximum(), 'f', decimals ) ); mExtentState = state; if ( isCheckable() && !isChecked() ) setChecked( true ); updateTitle(); emit extentChanged( extent ); }
void QgsComposerPicture::setRotationMap( int composerMapId ) { if ( !mComposition ) { return; } if ( composerMapId == -1 ) //disable rotation from map { disconnect( mRotationMap, SIGNAL( mapRotationChanged( double ) ), this, SLOT( updateMapRotation() ) ); disconnect( mRotationMap, SIGNAL( extentChanged() ), this, SLOT( updateMapRotation() ) ); mRotationMap = nullptr; }
void QgsComposerLegend::setComposerMap( const QgsComposerMap* map ) { if ( mComposerMap ) { disconnect( mComposerMap, SIGNAL( destroyed( QObject* ) ), this, SLOT( invalidateCurrentMap() ) ); disconnect( mComposerMap, SIGNAL( itemChanged() ), this, SLOT( updateFilterByMap() ) ); disconnect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( updateFilterByMap() ) ); disconnect( mComposerMap, SIGNAL( layerStyleOverridesChanged() ), this, SLOT( mapLayerStyleOverridesChanged() ) ); } mComposerMap = map; if ( map ) { QObject::connect( map, SIGNAL( destroyed( QObject* ) ), this, SLOT( invalidateCurrentMap() ) ); QObject::connect( map, SIGNAL( itemChanged() ), this, SLOT( updateFilterByMap() ) ); QObject::connect( map, SIGNAL( extentChanged() ), this, SLOT( updateFilterByMap() ) ); QObject::connect( map, SIGNAL( layerStyleOverridesChanged() ), this, SLOT( mapLayerStyleOverridesChanged() ) ); } updateItem(); }
void QgsComposerMapOverview::connectSignals() { if ( !mComposerMap ) { return; } if ( mFrameMapId != -1 && mComposerMap->composition() ) { const QgsComposerMap* map = mComposerMap->composition()->getComposerMapById( mFrameMapId ); if ( map ) { QObject::connect( map, SIGNAL( extentChanged() ), this, SLOT( overviewExtentChanged() ) ); } } }
void QgsComposerMapOverview::setFrameMap( const int mapId ) { if ( mFrameMapId == mapId ) { //no change return; } //disconnect old map if ( mFrameMapId != -1 && mComposerMap && mComposerMap->composition() ) { const QgsComposerMap* map = mComposerMap->composition()->getComposerMapById( mFrameMapId ); if ( map ) { QObject::disconnect( map, SIGNAL( extentChanged() ), this, SLOT( overviewExtentChanged() ) ); } } mFrameMapId = mapId; //connect to new map signals connectSignals(); }
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; }
bool QgsComposerAttributeTable::readXML( const QDomElement& itemElem, const QDomDocument& doc ) { if ( itemElem.isNull() ) { return false; } mShowOnlyVisibleFeatures = itemElem.attribute( "showOnlyVisibleFeatures", "1" ).toInt(); mFilterFeatures = itemElem.attribute( "filterFeatures", "false" ) == "true" ? true : false; mFeatureFilter = itemElem.attribute( "featureFilter", "" ); //composer map int composerMapId = itemElem.attribute( "composerMap", "-1" ).toInt(); if ( composerMapId == -1 ) { mComposerMap = 0; } if ( composition() ) { mComposerMap = composition()->getComposerMapById( composerMapId ); } else { mComposerMap = 0; } if ( mComposerMap ) { //if we have found a valid map item, listen out to extent changes on it and refresh the table QObject::connect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( refreshAttributes() ) ); } //vector layer QString layerId = itemElem.attribute( "vectorLayer", "not_existing" ); if ( layerId == "not_existing" ) { mVectorLayer = 0; } else { QgsMapLayer* ml = QgsMapLayerRegistry::instance()->mapLayer( layerId ); if ( ml ) { mVectorLayer = dynamic_cast<QgsVectorLayer*>( ml ); if ( mVectorLayer ) { //if we have found a valid vector layer, listen for modifications on it and refresh the table QObject::connect( mVectorLayer, SIGNAL( layerModified() ), this, SLOT( refreshAttributes() ) ); } } } //restore display attribute map mDisplayAttributes.clear(); QDomNodeList displayAttributeList = itemElem.elementsByTagName( "displayAttributes" ); if ( displayAttributeList.size() > 0 ) { QDomElement displayAttributesElem = displayAttributeList.at( 0 ).toElement(); QDomNodeList attributeEntryList = displayAttributesElem.elementsByTagName( "attributeEntry" ); for ( int i = 0; i < attributeEntryList.size(); ++i ) { QDomElement attributeEntryElem = attributeEntryList.at( i ).toElement(); int index = attributeEntryElem.attribute( "index", "-1" ).toInt(); if ( index != -1 ) { mDisplayAttributes.insert( index ); } } } //restore alias map mFieldAliasMap.clear(); QDomNodeList aliasMapNodeList = itemElem.elementsByTagName( "attributeAliasMap" ); if ( aliasMapNodeList.size() > 0 ) { QDomElement attributeAliasMapElem = aliasMapNodeList.at( 0 ).toElement(); QDomNodeList aliasMepEntryList = attributeAliasMapElem.elementsByTagName( "aliasEntry" ); for ( int i = 0; i < aliasMepEntryList.size(); ++i ) { QDomElement aliasEntryElem = aliasMepEntryList.at( i ).toElement(); int key = aliasEntryElem.attribute( "key", "-1" ).toInt(); QString value = aliasEntryElem.attribute( "value", "" ); mFieldAliasMap.insert( key, value ); } } //restore sort columns mSortInformation.clear(); QDomElement sortColumnsElem = itemElem.firstChildElement( "sortColumns" ); if ( !sortColumnsElem.isNull() ) { QDomNodeList columns = sortColumnsElem.elementsByTagName( "column" ); for ( int i = 0; i < columns.size(); ++i ) { QDomElement columnElem = columns.at( i ).toElement(); int attribute = columnElem.attribute( "index" ).toInt(); bool ascending = columnElem.attribute( "ascending" ) == "true" ? true : false; mSortInformation.push_back( qMakePair( attribute, ascending ) ); } } bool success = tableReadXML( itemElem, doc ); //must be done here because tableReadXML->setSceneRect changes mMaximumNumberOfFeatures mMaximumNumberOfFeatures = itemElem.attribute( "maxFeatures", "5" ).toInt(); refreshAttributes(); emit itemChanged(); return success; }
bool QgsComposerAttributeTableV2::readXML( const QDomElement& itemElem, const QDomDocument& doc, bool ignoreFrames ) { if ( itemElem.isNull() ) { return false; } //read general table properties if ( !QgsComposerTableV2::readXML( itemElem, doc, ignoreFrames ) ) { return false; } QgsVectorLayer* prevLayer = sourceLayer(); if ( prevLayer ) { //disconnect from previous layer disconnect( prevLayer, SIGNAL( layerModified() ), this, SLOT( refreshAttributes() ) ); } mSource = QgsComposerAttributeTableV2::ContentSource( itemElem.attribute( "source", "0" ).toInt() ); mRelationId = itemElem.attribute( "relationId", "" ); if ( mSource == QgsComposerAttributeTableV2::AtlasFeature ) { mCurrentAtlasLayer = mComposition->atlasComposition().coverageLayer(); } mShowUniqueRowsOnly = itemElem.attribute( "showUniqueRowsOnly", "0" ).toInt(); mShowOnlyVisibleFeatures = itemElem.attribute( "showOnlyVisibleFeatures", "1" ).toInt(); mFilterToAtlasIntersection = itemElem.attribute( "filterToAtlasIntersection", "0" ).toInt(); mFilterFeatures = itemElem.attribute( "filterFeatures", "false" ) == "true" ? true : false; mFeatureFilter = itemElem.attribute( "featureFilter", "" ); mMaximumNumberOfFeatures = itemElem.attribute( "maxFeatures", "5" ).toInt(); //composer map int composerMapId = itemElem.attribute( "composerMap", "-1" ).toInt(); if ( composerMapId == -1 ) { mComposerMap = 0; } if ( composition() ) { mComposerMap = composition()->getComposerMapById( composerMapId ); } else { mComposerMap = 0; } if ( mComposerMap ) { //if we have found a valid map item, listen out to extent changes on it and refresh the table connect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( refreshAttributes() ) ); } //vector layer QString layerId = itemElem.attribute( "vectorLayer", "not_existing" ); if ( layerId == "not_existing" ) { mVectorLayer = 0; } else { QgsMapLayer* ml = QgsMapLayerRegistry::instance()->mapLayer( layerId ); if ( ml ) { mVectorLayer = dynamic_cast<QgsVectorLayer*>( ml ); } } //connect to new layer connect( sourceLayer(), SIGNAL( layerModified() ), this, SLOT( refreshAttributes() ) ); refreshAttributes(); emit changed(); return true; }
bool QgsComposerAttributeTable::readXML( const QDomElement& itemElem, const QDomDocument& doc ) { if ( itemElem.isNull() ) { return false; } //read general table properties if ( !tableReadXML( itemElem, doc ) ) { return false; } mShowOnlyVisibleFeatures = itemElem.attribute( "showOnlyVisibleFeatures", "1" ).toInt(); mFilterFeatures = itemElem.attribute( "filterFeatures", "false" ) == "true" ? true : false; mFeatureFilter = itemElem.attribute( "featureFilter", "" ); //composer map int composerMapId = itemElem.attribute( "composerMap", "-1" ).toInt(); if ( composerMapId == -1 ) { mComposerMap = 0; } if ( composition() ) { mComposerMap = composition()->getComposerMapById( composerMapId ); } else { mComposerMap = 0; } if ( mComposerMap ) { //if we have found a valid map item, listen out to extent changes on it and refresh the table QObject::connect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( refreshAttributes() ) ); } //vector layer QString layerId = itemElem.attribute( "vectorLayer", "not_existing" ); if ( layerId == "not_existing" ) { mVectorLayer = 0; } else { QgsMapLayer* ml = QgsMapLayerRegistry::instance()->mapLayer( layerId ); if ( ml ) { mVectorLayer = dynamic_cast<QgsVectorLayer*>( ml ); if ( mVectorLayer ) { //if we have found a valid vector layer, listen for modifications on it and refresh the table QObject::connect( mVectorLayer, SIGNAL( layerModified() ), this, SLOT( refreshAttributes() ) ); } } } //restore display attribute map. This is required to upgrade pre 2.4 projects. QSet<int> displayAttributes; QDomNodeList displayAttributeList = itemElem.elementsByTagName( "displayAttributes" ); if ( displayAttributeList.size() > 0 ) { QDomElement displayAttributesElem = displayAttributeList.at( 0 ).toElement(); QDomNodeList attributeEntryList = displayAttributesElem.elementsByTagName( "attributeEntry" ); for ( int i = 0; i < attributeEntryList.size(); ++i ) { QDomElement attributeEntryElem = attributeEntryList.at( i ).toElement(); int index = attributeEntryElem.attribute( "index", "-1" ).toInt(); if ( index != -1 ) { displayAttributes.insert( index ); } } setDisplayAttributes( displayAttributes, false ); } //restore alias map. This is required to upgrade pre 2.4 projects. QMap<int, QString> fieldAliasMap; QDomNodeList aliasMapNodeList = itemElem.elementsByTagName( "attributeAliasMap" ); if ( aliasMapNodeList.size() > 0 ) { QDomElement attributeAliasMapElem = aliasMapNodeList.at( 0 ).toElement(); QDomNodeList aliasMepEntryList = attributeAliasMapElem.elementsByTagName( "aliasEntry" ); for ( int i = 0; i < aliasMepEntryList.size(); ++i ) { QDomElement aliasEntryElem = aliasMepEntryList.at( i ).toElement(); int key = aliasEntryElem.attribute( "key", "-1" ).toInt(); QString value = aliasEntryElem.attribute( "value", "" ); fieldAliasMap.insert( key, value ); } restoreFieldAliasMap( fieldAliasMap ); } //restore sort columns. This is required to upgrade pre 2.4 projects. QDomElement sortColumnsElem = itemElem.firstChildElement( "sortColumns" ); if ( !sortColumnsElem.isNull() && mVectorLayer ) { QDomNodeList columns = sortColumnsElem.elementsByTagName( "column" ); const QgsFields& fields = mVectorLayer->pendingFields(); for ( int i = 0; i < columns.size(); ++i ) { QDomElement columnElem = columns.at( i ).toElement(); int attribute = columnElem.attribute( "index" ).toInt(); Qt::SortOrder order = columnElem.attribute( "ascending" ) == "true" ? Qt::AscendingOrder : Qt::DescendingOrder; //find corresponding column QList<QgsComposerTableColumn*>::iterator columnIt = mColumns.begin(); for ( ; columnIt != mColumns.end(); ++columnIt ) { if (( *columnIt )->attribute() == fields[attribute].name() ) { ( *columnIt )->setSortByRank( i + 1 ); ( *columnIt )->setSortOrder( order ); break; } } } } //must be done here because tableReadXML->setSceneRect changes mMaximumNumberOfFeatures mMaximumNumberOfFeatures = itemElem.attribute( "maxFeatures", "5" ).toInt(); refreshAttributes(); emit itemChanged(); return true; }