Skip to content

Commit f0b9555

Browse files
committed
Renamed axis scale option "fixedSize" (False by default) to "labelAutoSize" (True by default)
Added missing method in QwtScaleWidget: setLabelAutoSize Fixed limitation: when auto size if off, the max label size depends on label rotation value
1 parent c4d8897 commit f0b9555

File tree

3 files changed

+45
-31
lines changed

3 files changed

+45
-31
lines changed

qwt/plot.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -774,19 +774,19 @@ def setAxisLabelRotation(self, axisId, rotation):
774774
if self.axisValid(axisId):
775775
self.axisWidget(axisId).setLabelRotation(rotation)
776776

777-
def setAxisFixedSize(self, axisId, state):
777+
def setAxisLabelAutoSize(self, axisId, state):
778778
"""
779-
Set tick labels fixed size option
779+
Set tick labels automatic size option (default: on)
780780
781781
:param int axisId: Axis index
782782
:param bool state: On/off
783783
784784
.. seealso::
785785
786-
:py:meth:`qwt.scale_draw.QwtScaleDraw.setFixedSize()`
786+
:py:meth:`qwt.scale_draw.QwtScaleDraw.setLabelAutoSize()`
787787
"""
788788
if self.axisValid(axisId):
789-
self.axisWidget(axisId).setFixedSize(state)
789+
self.axisWidget(axisId).setLabelAutoSize(state)
790790

791791
def setAxisMaxMinor(self, axisId, maxMinor):
792792
"""

qwt/scale_draw.py

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@ def __init__(self):
439439
self.alignment = QwtScaleDraw.BottomScale
440440
self.labelAlignment = 0
441441
self.labelRotation = 0.
442-
self.fixedSize = False
442+
self.labelAutoSize = True
443443
self.pos = QPointF()
444444

445445

@@ -1126,15 +1126,14 @@ def labelAlignment(self):
11261126
"""
11271127
return self.__data.labelAlignment
11281128

1129-
def setFixedSize(self, state):
1129+
def setLabelAutoSize(self, state):
11301130
"""
1131-
Set fixed size option state
1131+
Set label automatic size option state
11321132
1133-
When drawing text labels, if fixed size option is enabled, the axes
1134-
width and height won't change when axis range is changing. On the
1135-
contrary, if this option is disabled (default behavior), axes are
1136-
drawn in order to optimize layout space and depends on text label
1137-
individual sizes.
1133+
When drawing text labels, if automatic size mode is enabled (default
1134+
behavior), the axes are drawn in order to optimize layout space and
1135+
depends on text label individual sizes. Otherwise, width and height
1136+
won't change when axis range is changing.
11381137
11391138
This option is not implemented in Qwt C++ library: this may be used
11401139
either as an optimization (updating plot layout is faster when this
@@ -1146,26 +1145,28 @@ def setFixedSize(self, state):
11461145
11471146
.. seealso::
11481147
1149-
:py:meth:`fixedSize()`
1148+
:py:meth:`labelAutoSize()`
11501149
"""
1151-
self.__data.fixedSize = state
1150+
self.__data.labelAutoSize = state
11521151

1153-
def fixedSize(self):
1152+
def labelAutoSize(self):
11541153
"""
1155-
:return: True if fixed size option is enabled for labels
1154+
:return: True if automatic size option is enabled for labels
11561155
11571156
.. seealso::
11581157
1159-
:py:meth:`setFixedSize()`
1158+
:py:meth:`setLabelAutoSize()`
11601159
"""
1161-
return self.__data.fixedSize
1160+
return self.__data.labelAutoSize
11621161

11631162
def _get_max_label_size(self, font):
1164-
fid = font.toString()
1165-
size = self._max_label_sizes.get(fid)
1163+
key = (font.toString(), self.labelRotation())
1164+
size = self._max_label_sizes.get(key)
11661165
if size is None:
1167-
size = self.labelSize(font, -999999)
1168-
return self._max_label_sizes.setdefault(fid, size)
1166+
size = self.labelSize(font, -999999) # -999999 is the biggest label
1167+
size.setWidth(np.ceil(size.width()))
1168+
size.setHeight(np.ceil(size.height()))
1169+
return self._max_label_sizes.setdefault(key, size)
11691170
else:
11701171
return size
11711172

@@ -1177,11 +1178,11 @@ def maxLabelWidth(self, font):
11771178
ticks = self.scaleDiv().ticks(QwtScaleDiv.MajorTick)
11781179
if not ticks:
11791180
return 0
1180-
if self.fixedSize():
1181-
return self._get_max_label_size(font).width()
1182-
else:
1181+
if self.labelAutoSize():
11831182
return np.ceil(max([self.labelSize(font, v).width()
11841183
for v in ticks if self.scaleDiv().contains(v)]))
1184+
else:
1185+
return self._get_max_label_size(font).width()
11851186

11861187
def maxLabelHeight(self, font):
11871188
"""
@@ -1191,11 +1192,11 @@ def maxLabelHeight(self, font):
11911192
ticks = self.scaleDiv().ticks(QwtScaleDiv.MajorTick)
11921193
if not ticks:
11931194
return 0
1194-
if self.fixedSize():
1195-
return self._get_max_label_size(font).height()
1196-
else:
1195+
if self.labelAutoSize():
11971196
return np.ceil(max([self.labelSize(font, v).height()
11981197
for v in ticks if self.scaleDiv().contains(v)]))
1198+
else:
1199+
return self._get_max_label_size(font).height()
11991200

12001201
def updateMap(self):
12011202
pos = self.__data.pos

qwt/scale_widget.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ def setLabelAlignment(self, alignment):
276276
277277
.. seealso::
278278
279-
:py:meth:`QwtScaleDraw.setLabelAlignment()`,
279+
:py:meth:`qwt.scale_draw.QwtScaleDraw.setLabelAlignment()`,
280280
:py:meth:`setLabelRotation()`
281281
"""
282282
self.__data.scaleDraw.setLabelAlignment(alignment)
@@ -290,12 +290,25 @@ def setLabelRotation(self, rotation):
290290
291291
.. seealso::
292292
293-
:py:meth:`QwtScaleDraw.setLabelRotation()`,
293+
:py:meth:`qwt.scale_draw.QwtScaleDraw.setLabelRotation()`,
294294
:py:meth:`setLabelFlags()`
295295
"""
296296
self.__data.scaleDraw.setLabelRotation(rotation)
297297
self.layoutScale()
298298

299+
def setLabelAutoSize(self, state):
300+
"""
301+
Set the automatic size option for labels (default: on).
302+
303+
:param bool state: On/off
304+
305+
.. seealso::
306+
307+
:py:meth:`qwt.scale_draw.QwtScaleDraw.setLabelAutoSize()`
308+
"""
309+
self.__data.scaleDraw.setLabelAutoSize(state)
310+
self.layoutScale()
311+
299312
def setScaleDraw(self, scaleDraw):
300313
"""
301314
Set a scale draw
@@ -330,7 +343,7 @@ def scaleDraw(self):
330343
331344
.. seealso::
332345
333-
:py:meth:`QwtScaleDraw.setScaleDraw()`
346+
:py:meth:`qwt.scale_draw.QwtScaleDraw.setScaleDraw()`
334347
"""
335348
return self.__data.scaleDraw
336349

0 commit comments

Comments
 (0)