Skip to content

Commit 7100a3b

Browse files
author
wonder
committed
Option to set distance from label to the feature. Available for points and lines.
git-svn-id: http://svn.osgeo.org/qgis/branches/symbology-ng-branch@10907 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent e8a95a5 commit 7100a3b

File tree

4 files changed

+45
-1
lines changed

4 files changed

+45
-1
lines changed

src/plugins/labeling/labelinggui.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,20 @@ LabelingGui::LabelingGui( PalLabeling* lbl, QString layerId, QWidget* parent )
5151
chkEnableLabeling->setChecked( lyr.enabled );
5252
sliderPriority->setValue( lyr.priority );
5353
chkNoObstacle->setChecked( !lyr.obstacle );
54+
spinDist->setValue( lyr.dist );
5455
}
5556
else
5657
{
5758
// set enabled by default
5859
chkEnableLabeling->setChecked( true );
5960
}
6061

62+
// feature distance available only for points and lines
63+
if (layer()->geometryType() == QGis::Polygon)
64+
{
65+
spinDist->setEnabled( false );
66+
}
67+
6168
btnTextColor->setColor( lyr.textColor );
6269
updateFontPreview( lyr.textFont );
6370
}
@@ -85,6 +92,7 @@ LayerSettings LabelingGui::layerSettings()
8592
lyr.enabled = chkEnableLabeling->isChecked();
8693
lyr.priority = sliderPriority->value();
8794
lyr.obstacle = !chkNoObstacle->isChecked();
95+
lyr.dist = spinDist->value();
8896

8997
return lyr;
9098
}

src/plugins/labeling/labelingguibase.ui

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<x>0</x>
88
<y>0</y>
99
<width>354</width>
10-
<height>435</height>
10+
<height>436</height>
1111
</rect>
1212
</property>
1313
<property name="windowTitle">
@@ -67,6 +67,34 @@
6767
<item row="1" column="1">
6868
<widget class="QComboBox" name="cboFieldName"/>
6969
</item>
70+
<item row="2" column="0">
71+
<widget class="QLabel" name="label_8">
72+
<property name="text">
73+
<string>Label distance</string>
74+
</property>
75+
<property name="alignment">
76+
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
77+
</property>
78+
</widget>
79+
</item>
80+
<item row="2" column="1">
81+
<layout class="QHBoxLayout" name="horizontalLayout_3">
82+
<item>
83+
<widget class="QDoubleSpinBox" name="spinDist">
84+
<property name="decimals">
85+
<number>0</number>
86+
</property>
87+
</widget>
88+
</item>
89+
<item>
90+
<widget class="QLabel" name="label_9">
91+
<property name="text">
92+
<string>pixels</string>
93+
</property>
94+
</widget>
95+
</item>
96+
</layout>
97+
</item>
7098
</layout>
7199
</item>
72100
<item>

src/plugins/labeling/pallabeling.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,10 @@ void LayerSettings::registerFeature(QgsFeature& f)
9494

9595
// register feature to the layer
9696
palLayer->registerFeature(lbl->strId(), lbl, labelX, labelY);
97+
98+
// TODO: allow layer-wide feature dist in PAL...?
99+
if (dist != 0)
100+
palLayer->setFeatureDistlabel(lbl->strId(), dist);
97101
}
98102

99103

@@ -176,6 +180,9 @@ int PalLabeling::prepareLayerHook(void* context, void* layerContext, int& attrIn
176180
PalLabeling* thisClass = (PalLabeling*) context;
177181
LayerSettings* lyr = (LayerSettings*) layerContext;
178182

183+
if (!lyr->enabled)
184+
return 0;
185+
179186
QgsVectorLayer* vlayer = (QgsVectorLayer*) QgsMapLayerRegistry::instance()->mapLayer(lyr->layerId);
180187
if (vlayer == NULL)
181188
return 0;

src/plugins/labeling/pallabeling.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class LayerSettings
4242
bool enabled;
4343
int priority; // 0 = low, 10 = high
4444
bool obstacle; // whether it's an obstacle
45+
double dist; // distance from the feature
4546

4647
// called from register feature hook
4748
void calculateLabelSize(QString text, double& labelX, double& labelY);

0 commit comments

Comments
 (0)