|
1 | 1 | from typing import TYPE_CHECKING, Optional |
| 2 | +from math import floor, log10 |
2 | 3 | import wx |
3 | 4 |
|
4 | 5 | from amulet_map_editor.programs.edit.api.edit_canvas_container import ( |
|
24 | 25 | from amulet_map_editor.programs.edit.api.canvas import EditCanvas |
25 | 26 |
|
26 | 27 |
|
| 28 | +def _format_float(num: float) -> str: |
| 29 | + if num < 100: |
| 30 | + return f"{num:.0{max(0, 2 - floor(log10(num)))}f}".rstrip("0").rstrip(".") |
| 31 | + else: |
| 32 | + return f"{num:.0f}" |
| 33 | + |
| 34 | + |
27 | 35 | class FilePanel(wx.BoxSizer, EditCanvasContainer): |
28 | 36 | def __init__(self, canvas: "EditCanvas"): |
29 | 37 | wx.BoxSizer.__init__(self, wx.HORIZONTAL) |
@@ -65,7 +73,7 @@ def set_speed(evt): |
65 | 73 |
|
66 | 74 | self._speed_button = wx.Button( |
67 | 75 | canvas, |
68 | | - label=f"{self.canvas.camera.move_speed*1000/33:.4g}{lang.get('program_3d_edit.file_ui.speed_blocks_per_second')}", |
| 76 | + label=f"{_format_float(self.canvas.camera.move_speed * 1000 / 33)} {lang.get('program_3d_edit.file_ui.speed_blocks_per_second')}", |
69 | 77 | ) |
70 | 78 | self._speed_button.SetToolTip(lang.get("program_3d_edit.file_ui.speed_tooltip")) |
71 | 79 | self._speed_button.Bind(wx.EVT_BUTTON, set_speed) |
@@ -179,7 +187,7 @@ def _on_camera_move(self, evt): |
179 | 187 | evt.Skip() |
180 | 188 |
|
181 | 189 | def _on_speed_change(self, evt): |
182 | | - label = f"{self.canvas.camera.move_speed*1000/33:.4g}{lang.get('program_3d_edit.file_ui.speed_blocks_per_second')}" |
| 190 | + label = f"{_format_float(self.canvas.camera.move_speed * 1000 / 33)} {lang.get('program_3d_edit.file_ui.speed_blocks_per_second')}" |
183 | 191 | old_label = self._speed_button.GetLabel() |
184 | 192 | self._speed_button.SetLabel(label) |
185 | 193 | if len(label) != len(old_label): |
|
0 commit comments