Struct zng_wgt_grid::Grid
source · pub struct Grid(/* private fields */);
Expand description
W
Grid layout with cells of variable sizes.
Implementations§
source§impl Grid
impl Grid
sourcepub fn widget_new() -> Self
pub fn widget_new() -> Self
Start building a new instance.
sourcepub fn widget_type() -> WidgetType
pub fn widget_type() -> WidgetType
Gets the widget type info.
source§impl Grid
impl Grid
sourcepub fn cells(&self, cells: impl UiNodeList)
pub fn cells(&self, cells: impl UiNodeList)
c
Cell widget items.
Cells can select their own column, row, column-span and row-span using the properties in the Cell!
widget.
Note that you don’t need to use the cell widget, only the cell
properties.
If the column or row index is set to usize::MAX
the widget is positioned using the
logical index i, the column i % columns and the row i / columns.
source§impl Grid
impl Grid
sourcepub fn columns(&self, cells: impl UiNodeList)
pub fn columns(&self, cells: impl UiNodeList)
c
Column definitions.
You can define columns with any widget, but the Column!
widget is recommended. The column widget width defines
the width of the cells assigned to it, the Column::width
property can be used to enforce a width, otherwise the
column is sized by the widest cell.
The grid uses the WIDGET_SIZE
value to select one of three layout modes for columns:
- Default, used for columns that do not set width or set it to
Length::Default
. - Exact, used for columns that set the width to an unit that is exact or only depends on the grid context.
- Leftover, used for columns that set width to a
lft
value.
The column layout follows these steps:
1 - All Exact column widgets are layout, their final width defines the column width.
2 - All cell widgets with span 1
in Default columns are measured, the widest defines the fill width constrain,
the columns are layout using this constrain, the final width defines the column width.
3 - All Leftover cells are layout with the leftover grid width divided among all columns in this mode.
So given the columns 200 | 1.lft() | 1.lft()
and grid width of 1000
with spacing 5
the final widths are 200 | 395 | 395
,
for 200 + 5 + 395 + 5 + 395 = 1000
.
Note that the column widget is not the parent of the cells that match it, the column widget is rendered under cell and row widgets.
Properties like padding
and align
only affect the column visual, not the cells, similarly contextual properties like text_color
don’t affect the cells.
source§impl Grid
impl Grid
sourcepub fn rows(&self, cells: impl UiNodeList)
pub fn rows(&self, cells: impl UiNodeList)
c
Row definitions.
Same behavior as columns
, but in the y dimension.
source§impl Grid
impl Grid
sourcepub fn auto_grow_fn(&self, auto_grow: impl IntoVar<WidgetFn<AutoGrowFnArgs>>)
pub fn auto_grow_fn(&self, auto_grow: impl IntoVar<WidgetFn<AutoGrowFnArgs>>)
c
Widget function used when new rows or columns are needed to cover a cell placement.
The function is used according to the auto_grow_mode
. Note that imaginary rows or columns are used if
the function is WidgetFn::nil
.
source§impl Grid
impl Grid
sourcepub fn auto_grow_mode(&self, mode: impl IntoVar<AutoGrowMode>)
pub fn auto_grow_mode(&self, mode: impl IntoVar<AutoGrowMode>)
c
Defines the direction the grid auto-grows and the maximum inclusive index that can be covered by auto-generated columns or rows.
If a cell is outside this index and is not covered by predefined columns or rows a new one is auto generated for it, but if the
cell is also outside this max it is collapsed.
Is `AutoGrowMode::rows() by default.
Methods from Deref<Target = WidgetBase>§
sourcepub fn widget_builder(&mut self) -> &mut WidgetBuilder
pub fn widget_builder(&mut self) -> &mut WidgetBuilder
Returns a mutable reference to the widget builder.
sourcepub fn widget_when(&mut self) -> Option<&mut WhenInfo>
pub fn widget_when(&mut self) -> Option<&mut WhenInfo>
Returns a mutable reference to the when
block if called inside a when block.
sourcepub fn widget_take(&mut self) -> WidgetBuilder
pub fn widget_take(&mut self) -> WidgetBuilder
Takes the widget builder, finishing the widget macro build.
After this call trying to set a property using self
will panic,
the returned builder can still be manipulated directly.
sourcepub fn widget_build(&mut self) -> impl UiNode
pub fn widget_build(&mut self) -> impl UiNode
Build the widget.
After this call trying to set a property will panic.
sourcepub fn widget_importance(&mut self) -> &mut Importance
pub fn widget_importance(&mut self) -> &mut Importance
Returns a mutable reference to the importance of the next property assigns, unsets or when blocks.
Note that during the widget_intrinsic
call this is Importance::WIDGET
and after it is Importance::INSTANCE
.
sourcepub fn start_when_block(
&mut self,
inputs: Box<[WhenInput]>,
state: Box<dyn VarBoxed<bool>>,
expr: &'static str,
location: SourceLocation,
)
pub fn start_when_block( &mut self, inputs: Box<[WhenInput]>, state: Box<dyn VarBoxed<bool>>, expr: &'static str, location: SourceLocation, )
Start building a when
block, all properties set after this call are pushed in the when block.
sourcepub fn end_when_block(&mut self)
pub fn end_when_block(&mut self)
End the current when
block, all properties set after this call are pushed in the widget.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Grid
impl !RefUnwindSafe for Grid
impl Send for Grid
impl !Sync for Grid
impl Unpin for Grid
impl !UnwindSafe for Grid
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more