void QgsComposerLegend::updateLegend() { // take layer list from map renderer (to have legend order) mLegendModel.setLayerSet( mComposition ? mComposition->mapSettings().layers() : QStringList() ); adjustBoxSize(); update(); }
void QgsComposerScaleBar::setFont( const QFont& font ) { mFont = font; adjustBoxSize(); update(); emit itemChanged(); }
QgsComposerLegend::QgsComposerLegend( QgsComposition* composition ) : QgsComposerItem( composition ) , mTitle( tr( "Legend" ) ) , mFontColor( QColor( 0, 0, 0 ) ) , mBoxSpace( 2 ) , mColumnSpace( 2 ) , mColumnCount( 1 ) , mComposerMap( 0 ) , mSplitLayer( false ) , mEqualColumnWidth( false ) { setStyleMargin( QgsComposerLegendStyle::Title, QgsComposerLegendStyle::Bottom, 2 ); setStyleMargin( QgsComposerLegendStyle::Group, QgsComposerLegendStyle::Top, 2 ); setStyleMargin( QgsComposerLegendStyle::Subgroup, QgsComposerLegendStyle::Top, 2 ); setStyleMargin( QgsComposerLegendStyle::Symbol, QgsComposerLegendStyle::Top, 2 ); setStyleMargin( QgsComposerLegendStyle::SymbolLabel, QgsComposerLegendStyle::Top, 2 ); setStyleMargin( QgsComposerLegendStyle::SymbolLabel, QgsComposerLegendStyle::Left, 2 ); rstyle( QgsComposerLegendStyle::Title ).rfont().setPointSizeF( 16.0 ); rstyle( QgsComposerLegendStyle::Group ).rfont().setPointSizeF( 14.0 ); rstyle( QgsComposerLegendStyle::Subgroup ).rfont().setPointSizeF( 12.0 ); rstyle( QgsComposerLegendStyle::SymbolLabel ).rfont().setPointSizeF( 12.0 ); mSymbolWidth = 7; mSymbolHeight = 4; mWmsLegendWidth = 50; mWmsLegendHeight = 25; mWrapChar = ""; mlineSpacing = 1.5; adjustBoxSize(); connect( &mLegendModel, SIGNAL( layersChanged() ), this, SLOT( synchronizeWithModel() ) ); }
void QgsComposerScaleBar::applyDefaultSize() { if ( mComposerMap ) { setUnits( Meters ); double widthMeter = mapWidth(); int nUnitsPerSegment = widthMeter / 10.0; //default scalebar width equals half the map width setNumUnitsPerSegment( nUnitsPerSegment ); if ( nUnitsPerSegment > 1000 ) { setNumUnitsPerSegment(( int )( numUnitsPerSegment() / 1000.0 + 0.5 ) * 1000 ); setUnitLabeling( tr( "km" ) ); setNumMapUnitsPerScaleBarUnit( 1000 ); } else { setUnitLabeling( tr( "m" ) ); } setNumSegments( 4 ); setNumSegmentsLeft( 2 ); } refreshSegmentMillimeters(); adjustBoxSize(); emit itemChanged(); }
void QgsComposerLegend::updateFilterByMap() { if ( isRemoved() ) return; if ( mComposerMap ) mLegendModel2->setLayerStyleOverrides( mComposerMap->layerStyleOverrides() ); else mLegendModel2->setLayerStyleOverrides( QMap<QString, QString>() ); if ( mComposerMap && mLegendFilterByMap ) { int dpi = mComposition->printResolution(); QgsRectangle requestRectangle; mComposerMap->requestedExtent( requestRectangle ); QSizeF theSize( requestRectangle.width(), requestRectangle.height() ); theSize *= mComposerMap->mapUnitsToMM() * dpi / 25.4; QgsMapSettings ms = mComposerMap->mapSettings( requestRectangle, theSize, dpi ); mLegendModel2->setLegendFilterByMap( &ms ); } else mLegendModel2->setLegendFilterByMap( 0 ); adjustBoxSize(); update(); }
void QgsComposerLegend::refreshDataDefinedProperty( const QgsComposerObject::DataDefinedProperty property, const QgsExpressionContext *context ) { QgsExpressionContext scopedContext = createExpressionContext(); const QgsExpressionContext *evalContext = context ? context : &scopedContext; bool forceUpdate = false; //updates data defined properties and redraws item to match if ( property == QgsComposerObject::LegendTitle || property == QgsComposerObject::AllProperties ) { bool ok = false; QString t = mDataDefinedProperties.valueAsString( QgsComposerObject::LegendTitle, *evalContext, mTitle, &ok ); if ( ok ) { mSettings.setTitle( t ); forceUpdate = true; } } if ( property == QgsComposerObject::LegendColumnCount || property == QgsComposerObject::AllProperties ) { bool ok = false; int cols = mDataDefinedProperties.valueAsInt( QgsComposerObject::LegendColumnCount, *evalContext, mColumnCount, &ok ); if ( ok && cols >= 0 ) { mSettings.setColumnCount( cols ); forceUpdate = true; } } if ( forceUpdate ) { adjustBoxSize(); update(); } QgsComposerObject::refreshDataDefinedProperty( property, context ); }
QgsComposerLegend::QgsComposerLegend( QgsComposition* composition ) : QgsComposerItem( composition ) , mTitle( tr( "Legend" ) ) , mBoxSpace( 2 ) , mColumnSpace( 2 ) , mGroupSpace( 2 ) , mLayerSpace( 2 ) , mSymbolSpace( 2 ) , mIconLabelSpace( 2 ) , mColumnCount( 1 ) , mComposerMap( 0 ) , mSplitLayer( false ) , mEqualColumnWidth( false ) { //QStringList idList = layerIdList(); //mLegendModel.setLayerSet( idList ); mTitleFont.setPointSizeF( 16.0 ); mGroupFont.setPointSizeF( 14.0 ); mLayerFont.setPointSizeF( 12.0 ); mItemFont.setPointSizeF( 12.0 ); mSymbolWidth = 7; mSymbolHeight = 4; mWrapChar = ""; mlineSpacing = 1.5; adjustBoxSize(); connect( &mLegendModel, SIGNAL( layersChanged() ), this, SLOT( synchronizeWithModel() ) ); }
void QgsComposerLegend::setAutoUpdateModel( bool autoUpdate ) { if ( autoUpdate == autoUpdateModel() ) return; setCustomLayerTree( autoUpdate ? 0 : QgsLayerTree::toGroup( QgsProject::instance()->layerTreeRoot()->clone() ) ); adjustBoxSize(); }
QgsComposerLegend::QgsComposerLegend( QgsComposition* composition ) : QgsComposerItem( composition ) , mComposerMap( 0 ) { adjustBoxSize(); connect( &mLegendModel, SIGNAL( layersChanged() ), this, SLOT( synchronizeWithModel() ) ); }
void QgsComposerLegend::setAutoUpdateModel( bool autoUpdate ) { if ( autoUpdate == autoUpdateModel() ) return; setCustomLayerTree( autoUpdate ? nullptr : mComposition->project()->layerTreeRoot()->clone() ); adjustBoxSize(); updateItem(); }
void QgsLayoutItemLegend::setAutoUpdateModel( bool autoUpdate ) { if ( autoUpdate == autoUpdateModel() ) return; setCustomLayerTree( autoUpdate ? nullptr : mLayout->project()->layerTreeRoot()->clone() ); adjustBoxSize(); updateFilterByMap( false ); }
void QgsComposerScaleBar::update() { //Don't adjust box size for numeric scale bars: if ( mStyle && mStyle->name() != "Numeric" ) { adjustBoxSize(); } QgsComposerItem::update(); }
QgsComposerLegend::QgsComposerLegend( QgsComposition* composition ) : QgsComposerItem( composition ) , mCustomLayerTree( 0 ) , mComposerMap( 0 ) { mLegendModel2 = new QgsLegendModelV2( QgsProject::instance()->layerTreeRoot() ); adjustBoxSize(); connect( &mLegendModel, SIGNAL( layersChanged() ), this, SLOT( synchronizeWithModel() ) ); }
void QgsComposerLegend::mapLayerStyleOverridesChanged() { if ( !mComposerMap ) return; // map's style has been changed, so make sure to update the legend here mLegendModel2->setLayerStyleOverrides( mComposerMap->layerStyleOverrides() ); foreach ( QgsLayerTreeLayer* nodeLayer, mLegendModel2->rootGroup()->findLayers() ) mLegendModel2->refreshLayerLegend( nodeLayer ); adjustBoxSize(); update(); }
void QgsComposerScaleBar::applyDefaultSize() { if ( mComposerMap ) { //calculate mNumUnitsPerSegment QgsRectangle composerMapRect = mComposerMap->extent(); double proposedScaleBarLength = composerMapRect.width() / 4; int powerOf10 = int ( pow( 10.0, int ( log( proposedScaleBarLength ) / log( 10.0 ) ) ) ); // from scalebar plugin int nPow10 = proposedScaleBarLength / powerOf10; mNumSegments = 2; mNumUnitsPerSegment = ( nPow10 / 2 ) * powerOf10; } refreshSegmentMillimeters(); adjustBoxSize(); emit itemChanged(); }
void QgsComposerScaleBar::applyDefaultSettings() { mNumSegments = 2; mNumSegmentsLeft = 0; mNumMapUnitsPerScaleBarUnit = 1.0; //style delete mStyle; mStyle = new QgsSingleBoxScaleBarStyle( this ); mHeight = 5; mPen = QPen( QColor( 0, 0, 0 ) ); mPen.setWidthF( 1.0 ); mBrush.setColor( QColor( 0, 0, 0 ) ); mBrush.setStyle( Qt::SolidPattern ); mFont.setPointSizeF( 12.0 ); mLabelBarSpace = 3.0; mBoxContentSpace = 1.0; if ( mComposerMap ) { //calculate mNumUnitsPerSegment QRectF composerItemRect = mComposerMap->rect(); QgsRectangle composerMapRect = mComposerMap->extent(); double proposedScaleBarLength = composerMapRect.width() / 4; int powerOf10 = int ( pow( 10.0, int ( log( proposedScaleBarLength ) / log( 10.0 ) ) ) ); // from scalebar plugin int nPow10 = proposedScaleBarLength / powerOf10; mNumSegments = 2; mNumUnitsPerSegment = ( nPow10 / 2 ) * powerOf10; } refreshSegmentMillimeters(); adjustBoxSize(); }
QgsComposerLegend::QgsComposerLegend( QgsComposition* composition ) : QgsComposerItem( composition ) , mCustomLayerTree( 0 ) , mComposerMap( 0 ) , mLegendFilterByMap( false ) , mFilterOutAtlas( false ) , mFilterAskedForUpdate( false ) , mInAtlas( false ) { mLegendModel2 = new QgsLegendModelV2( QgsProject::instance()->layerTreeRoot() ); adjustBoxSize(); connect( &mLegendModel, SIGNAL( layersChanged() ), this, SLOT( synchronizeWithModel() ) ); connect( &composition->atlasComposition(), SIGNAL( renderEnded() ), this, SLOT( onAtlasEnded() ) ); connect( &composition->atlasComposition(), SIGNAL( featureChanged( QgsFeature* ) ), this, SLOT( onAtlasFeature( QgsFeature* ) ) ); // Connect to the main layertreeroot. // It serves in "auto update mode" as a medium between the main app legend and this one connect( QgsProject::instance()->layerTreeRoot(), SIGNAL( customPropertyChanged( QgsLayerTreeNode*, QString ) ), this, SLOT( nodeCustomPropertyChanged( QgsLayerTreeNode*, QString ) ) ); }
QgsComposerLegend::QgsComposerLegend( QgsComposition* composition ) : QgsComposerItem( composition ) , mTitle( tr( "Legend" ) ) , mBoxSpace( 2 ) , mLayerSpace( 2 ) , mSymbolSpace( 2 ) , mIconLabelSpace( 2 ), mComposerMap( 0 ) { //QStringList idList = layerIdList(); //mLegendModel.setLayerSet( idList ); mTitleFont.setPointSizeF( 16.0 ); mGroupFont.setPointSizeF( 14.0 ); mLayerFont.setPointSizeF( 12.0 ); mItemFont.setPointSizeF( 12.0 ); mSymbolWidth = 7; mSymbolHeight = 4; adjustBoxSize(); connect( &mLegendModel, SIGNAL( layersChanged() ), this, SLOT( synchronizeWithModel() ) ); }
void QgsComposerLegend::mapLayerStyleOverridesChanged() { if ( !mComposerMap ) return; // map's style has been changed, so make sure to update the legend here if ( mLegendFilterByMap ) { // legend is being filtered by map, so we need to re run the hit test too // as the style overrides may also have affected the visible symbols updateFilterByMap( false ); } else { mLegendModel->setLayerStyleOverrides( mComposerMap->layerStyleOverrides() ); Q_FOREACH ( QgsLayerTreeLayer *nodeLayer, mLegendModel->rootGroup()->findLayers() ) mLegendModel->refreshLayerLegend( nodeLayer ); } adjustBoxSize(); updateItem(); }
void QgsLayoutItemLegend::updateLegend() { adjustBoxSize(); updateFilterByMap( false ); }
void QgsComposerLegend::setGroupFont( const QFont& f ) { mGroupFont = f; adjustBoxSize(); update(); }
void QgsComposerScaleBar::applyDefaultSize( QgsComposerScaleBar::ScaleBarUnits u ) { if ( mComposerMap ) { setUnits( u ); double upperMagnitudeMultiplier = 1.0; double widthInSelectedUnits = mapWidth(); double initialUnitsPerSegment = widthInSelectedUnits / 10.0; //default scalebar width equals half the map width setNumUnitsPerSegment( initialUnitsPerSegment ); switch ( mUnits ) { case MapUnits: { upperMagnitudeMultiplier = 1.0; setUnitLabeling( tr( "units" ) ); break; } case Meters: { if ( initialUnitsPerSegment > 1000.0 ) { upperMagnitudeMultiplier = 1000.0; setUnitLabeling( tr( "km" ) ); } else { upperMagnitudeMultiplier = 1.0; setUnitLabeling( tr( "m" ) ); } break; } case Feet: { if ( initialUnitsPerSegment > 5419.95 ) { upperMagnitudeMultiplier = 5419.95; setUnitLabeling( tr( "miles" ) ); } else { upperMagnitudeMultiplier = 1.0; setUnitLabeling( tr( "ft" ) ); } break; } case NauticalMiles: { upperMagnitudeMultiplier = 1; setUnitLabeling( tr( "Nm" ) ); break; } } double segmentWidth = initialUnitsPerSegment / upperMagnitudeMultiplier; int segmentMagnitude = floor( log10( segmentWidth ) ); double unitsPerSegment = upperMagnitudeMultiplier * ( qPow( 10.0, segmentMagnitude ) ); double multiplier = floor(( widthInSelectedUnits / ( unitsPerSegment * 10.0 ) ) / 2.5 ) * 2.5; if ( multiplier > 0 ) { unitsPerSegment = unitsPerSegment * multiplier; } setNumUnitsPerSegment( unitsPerSegment ); setNumMapUnitsPerScaleBarUnit( upperMagnitudeMultiplier ); setNumSegments( 4 ); setNumSegmentsLeft( 2 ); } refreshSegmentMillimeters(); adjustBoxSize(); emit itemChanged(); }
void QgsComposerScaleBar::update() { adjustBoxSize(); QgsComposerItem::update(); }
void QgsComposerLegend::setLayerFont( const QFont& f ) { mLayerFont = f; adjustBoxSize(); update(); }
void QgsComposerLegend::setItemFont( const QFont& f ) { mItemFont = f; adjustBoxSize(); update(); }
void QgsComposerLegend::updateLegend() { mLegendModel.setLayerSet( layerIdList() ); adjustBoxSize(); update(); }
void QgsComposerLegend::synchronizeWithModel() { adjustBoxSize(); updateItem(); }
void QgsComposerLegend::synchronizeWithModel() { QgsDebugMsg( "Entered" ); adjustBoxSize(); update(); }
void QgsComposerLegend::setTitleFont( const QFont& f ) { mTitleFont = f; adjustBoxSize(); update(); }
void QgsComposerLegend::updateLegend() { adjustBoxSize(); updateItem(); }