Files
BBS-Client-TUI/src/widget/dialogue.h
T

43 lines
1.2 KiB
C

/* SPDX-License-Identifier: MIT */
/* Copyright (c) 2026 Oleksandr Zhylin */
#ifndef W_DIALOGUE_H
#define W_DIALOGUE_H
#include "../common.h"
#include "group.h"
#include <ncursesw/ncurses.h>
#include <stdint.h>
#include <utils.h>
#include <widget_core.h>
#define MAX_IDS 64
enum w_dialogue_color_scheme { dc_normal, dc_alert };
typedef struct {
w_t w;
WINDOW *win;
w_group_t *g_content;
w_group_t *g_action;
w_g_el_t *active_el;
char text[DIALOGUE_TEXT];
bool is_initiated;
bool needs_update;
bool needs_destroy;
coordinates_t *p_coordinates;
enum w_dialogue_color_scheme color_scheme;
d_array_ptr_t id_map;
} w_dialogue_t;
void w_dialogue_init(w_dialogue_t *d, const char title[], const char text[],
coordinates_t *p_coordinates);
void w_dialogue_vinit(w_dialogue_t *dialogue, const char title[],
coordinates_t *p_coordinates, const char fmt[],
va_list *v_args);
int32_t w_dialogue_draw(w_dialogue_t *d);
void w_dialogue_destroy(w_dialogue_t *d, void *app);
void w_dialogue_callback_default(w_cb_args_t *args);
void w_dialogue_init_active_id(w_dialogue_t *dialogue);
#endif