ui: new value-forwarding method

This commit is contained in:
2026-02-25 16:15:28 +02:00
parent 86c11968da
commit b10766f6e3
17 changed files with 134 additions and 115 deletions
+51 -11
View File
@@ -5,6 +5,13 @@
#include <ncurses.h>
#include <stdint.h>
enum g_type { g_content, g_action };
enum g_direction {
horizontal,
vertical,
};
enum w_type {
w_end,
w_button,
@@ -15,12 +22,45 @@ enum w_type {
w_fs_file_list,
};
enum val_type {
val_num,
val_ptr,
val_nul,
};
struct val_t {
enum val_type type;
union {
void *ptr;
int64_t num;
} val;
};
typedef struct {
int64_t id;
int64_t idx; /* element index in the group */
void *element;
enum w_type type;
enum g_type g_type;
bool is_default;
struct val_t val;
} group_el_t;
enum cbrp_code {
cbrc_none, /* default */
cbrp_val,
cbrp_g_el, /* element of type group_el_t */
cbrp_err
};
typedef struct {
void *app;
void *element;
void *data;
void *resp_data;
uint32_t active_id;
struct {
enum cbrp_code code;
struct val_t val;
} resp_data;
void *active_el;
} callback_args_t;
@@ -35,19 +75,18 @@ enum rsize {
};
typedef struct widget_t {
uint32_t id;
int64_t id;
char title[DIALOGUE_TITLE];
uint32_t x;
uint32_t y;
uint32_t m_x;
uint32_t m_y;
int64_t x;
int64_t y;
int64_t m_x;
int64_t m_y;
struct {
uint32_t y;
uint32_t x;
int64_t y;
int64_t x;
} cur;
WINDOW *const *parent_win;
struct widget_t *w_parent;
// enum rsize rsize;
void (*callback)(callback_args_t *args);
} widget_t;
@@ -60,7 +99,8 @@ enum pmt_attrs {
void init_widget(widget_t *w, widget_t *w_parent, WINDOW **win, char *title);
int32_t get_max_line_len(const char *text, uint32_t *line_count);
uint32_t print_multiline_text(WINDOW *win, const char *text, const uint32_t win_width, const uint32_t y,
uint32_t print_multiline_text(WINDOW *win, const char *text,
const uint32_t win_width, const uint32_t y,
const uint32_t x, const uint16_t attrs);
#endif