8#include "grid_delegate.hpp"
9#include "grid_layout.hpp"
11#include "../weak_or_unique_ptr.hpp"
14namespace hi::inline v1 {
61 template<
typename Widget,
typename... Args>
64 auto tmp = std::make_unique<Widget>(window,
this, std::forward<Args>(args)...);
65 return static_cast<Widget &
>(add_widget(column_first, row_first, column_last, row_last,
std::move(tmp)));
76 template<
typename Widget,
typename... Args>
79 auto tmp = std::make_unique<Widget>(window,
this, std::forward<Args>(args)...);
80 return static_cast<Widget &
>(add_widget(column, row, column + 1, row + 1,
std::move(tmp)));
91 template<
typename Widget,
typename... Args>
94 hilet[column_first, row_first, column_last, row_last] = parse_spreadsheet_range(address);
95 return make_widget<Widget>(column_first, row_first, column_last, row_last, std::forward<Args>(args)...);
101 for (
hilet &cell : _cells) {
102 co_yield cell.widget.get();
106 widget_constraints
const &set_constraints() noexcept override;
107 void set_layout(widget_layout const &layout) noexcept override;
108 void draw(draw_context const &context) noexcept override;
109 [[nodiscard]] hitbox hitbox_test(point3 position) const noexcept override;
125 column_first(column_first),
126 row_first(row_first),
127 column_last(column_last),
133 [[nodiscard]] aarectangle
134 rectangle(grid_layout
const &columns, grid_layout
const &rows,
float container_height)
const noexcept
136 hilet[x0, x3] = columns.get_positions(column_first, column_last);
137 hilet[y0, y3] = rows.get_positions(row_first, row_last);
139 return {point2{x0, container_height - y3}, point2{x3, container_height - y0}};
146 grid_layout _columns;
#define hilet
Invariant should be the default for variables.
Definition required.hpp:23
The functions in this file are for handling spreadsheet addresses.
A return value for a generator-function.
Definition generator.hpp:27
Definition gui_window.hpp:40
Definition grid_delegate.hpp:13
A GUI widget that lays out child-widgets in a grid with variable sized cells.
Definition grid_widget.hpp:37
Widget & make_widget(std::string_view address, Args &&...args)
Add a widget directly to this grid-widget.
Definition grid_widget.hpp:92
Widget & make_widget(std::size_t column, std::size_t row, Args &&...args)
Add a widget directly to this grid-widget.
Definition grid_widget.hpp:77
grid_widget(gui_window &window, widget *parent, std::weak_ptr< delegate_type > delegate={}) noexcept
Constructs an empty grid widget.
Widget & make_widget(std::size_t column_first, std::size_t row_first, std::size_t column_last, std::size_t row_last, Args &&...args)
Add a widget directly to this grid-widget.
Definition grid_widget.hpp:62
An interactive graphical object as part of the user-interface.
Definition widget.hpp:40