Clarify grid autobreak behavior
This commit is contained in:
@@ -134,6 +134,7 @@ class GridLayoutContext:
|
||||
columns: int
|
||||
min_column_width: int
|
||||
fit_gauges: bool
|
||||
cell_padding: int = 12
|
||||
row_height: int = 0
|
||||
available_width: int = 0
|
||||
_next_index: int = 0
|
||||
@@ -169,7 +170,7 @@ class GridLayoutContext:
|
||||
def cell_width(self) -> int | None:
|
||||
if self.available_width <= 0:
|
||||
return None
|
||||
return max(int(self.available_width / self.columns), 1)
|
||||
return max(int(self.available_width / self.columns) - self.cell_padding, 1)
|
||||
|
||||
|
||||
def create_gauge_context(gauge_type: str, config: ConfigT) -> GaugeContext[ConfigT]:
|
||||
@@ -257,9 +258,15 @@ def _available_layout_width(parent: Tag | None, width: int) -> int:
|
||||
return 0
|
||||
|
||||
|
||||
def _resolved_columns(columns: int, min_column_width: int, available_width: int) -> int:
|
||||
columns = max(int(columns), 1)
|
||||
def _resolved_columns(
|
||||
columns: int | Literal["auto"], min_column_width: int, available_width: int
|
||||
) -> int:
|
||||
min_column_width = max(int(min_column_width), 0)
|
||||
if columns == "auto":
|
||||
if available_width > 0 and min_column_width > 0:
|
||||
return max(1, available_width // min_column_width)
|
||||
return 1
|
||||
columns = max(int(columns), 1)
|
||||
if available_width > 0 and min_column_width > 0:
|
||||
columns = min(columns, max(1, available_width // min_column_width))
|
||||
return columns
|
||||
@@ -305,9 +312,10 @@ def gauge_panel(
|
||||
|
||||
def gauge_grid(
|
||||
*,
|
||||
columns: int = 1,
|
||||
columns: int | Literal["auto"] = 1,
|
||||
min_column_width: int = 180,
|
||||
fit_gauges: bool = True,
|
||||
cell_padding: int = 12,
|
||||
row_height: int = 0,
|
||||
tag: Tag | None = None,
|
||||
parent: Tag | None = None,
|
||||
@@ -318,7 +326,7 @@ def gauge_grid(
|
||||
) -> GridLayoutContext:
|
||||
"""Create a lightweight wrapping gauge layout container."""
|
||||
if not _dpg_context_active:
|
||||
return GridLayoutContext(None, 1, min_column_width, fit_gauges)
|
||||
return GridLayoutContext(None, 1, min_column_width, fit_gauges, cell_padding)
|
||||
layout_parent, layout_width = _next_layout_cell(parent)
|
||||
if layout_parent is not None:
|
||||
parent = layout_parent
|
||||
@@ -340,7 +348,13 @@ def gauge_grid(
|
||||
for _ in range(columns):
|
||||
dpg.add_table_column(parent=container, width_stretch=True, init_width_or_weight=1.0)
|
||||
return GridLayoutContext(
|
||||
container, columns, min_column_width, fit_gauges, row_height, available_width
|
||||
container,
|
||||
columns,
|
||||
min_column_width,
|
||||
fit_gauges,
|
||||
cell_padding,
|
||||
row_height,
|
||||
available_width,
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user