8#include "grid_delegate.hpp"
10#include "../flow_layout.hpp"
11#include "../weak_or_unique_ptr.hpp"
59 template<
typename Widget,
typename... Args>
60 Widget &
make_widget(
size_t column_nr,
size_t row_nr, Args &&...args)
62 auto tmp = std::make_unique<Widget>(
window,
this, std::forward<Args>(args)...);
64 return static_cast<Widget &
>(add_widget(column_nr, row_nr,
std::move(tmp)));
75 template<
typename Widget,
typename... Args>
79 return make_widget<Widget>(column_nr, row_nr, std::forward<Args>(args)...);
83 void init() noexcept override;
84 void deinit() noexcept override;
85 [[nodiscard]]
float margin() const noexcept override;
86 [[nodiscard]]
bool constrain(utc_nanoseconds display_time_point,
bool need_reconstrain) noexcept override;
87 [[nodiscard]]
void layout(utc_nanoseconds display_time_point,
bool need_layout) noexcept override;
99 [[nodiscard]] aarectangle
100 rectangle(flow_layout
const &columns, flow_layout
const &rows,
float container_height)
const noexcept
102 ttlet[x, width] = columns.get_offset_and_size(column_nr);
103 ttlet[y, height] = rows.get_offset_and_size(row_nr);
105 return {x, container_height - y - height, width, height};
112 flow_layout _columns;
118 calculate_size(
std::vector<cell> const &cells, flow_layout &rows, flow_layout &columns)
noexcept;
119 [[nodiscard]]
bool address_in_use(
size_t column_nr,
size_t row_nr)
const noexcept;
The functions in this file are for handling spreadsheet addresses.
std::pair< size_t, size_t > parse_spreadsheet_address(std::string_view address, size_t start_column_nr=0, size_t start_row_nr=0)
Parse a spreadsheet address.
Definition spreadsheet_address.hpp:73
Definition gui_window.hpp:39
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:76
grid_widget(gui_window &window, widget *parent, std::weak_ptr< delegate_type > delegate={}) noexcept
Constructs an empty grid widget.
Widget & make_widget(size_t column_nr, size_t row_nr, Args &&...args)
Add a widget directly to this grid-widget.
Definition grid_widget.hpp:60
An interactive graphical object as part of the user-interface.
Definition widget.hpp:37
widget *const parent
Pointer to the parent widget.
Definition widget.hpp:46
aarectangle rectangle() const noexcept
Get the rectangle in local coordinates.
gui_window & window
Convenient reference to the Window.
Definition widget.hpp:41
widget(gui_window &window, widget *parent) noexcept