ui: dialogue: +id_map
This commit is contained in:
@@ -18,7 +18,9 @@ target_link_libraries(widget
|
||||
PRIVATE
|
||||
bstring
|
||||
widget_core
|
||||
utils
|
||||
)
|
||||
|
||||
target_include_directories(widget PRIVATE "../widget_core")
|
||||
target_include_directories(widget PRIVATE "../lib/")
|
||||
target_include_directories(widget PRIVATE "../lib/")
|
||||
target_include_directories(widget PRIVATE "../utils/")
|
||||
@@ -178,6 +178,7 @@ void init_dialogue(dialogue_t *dialogue, const char title[], const char text[],
|
||||
strcpy(dialogue->w.title, title);
|
||||
t_size = strlen(text);
|
||||
strcpy(dialogue->text, text);
|
||||
init_d_arr_ptr(&(dialogue->id_map), MAX_IDS);
|
||||
/* trim the last new line symbol */
|
||||
if (t_size && dialogue->text[t_size - 1] == '\n')
|
||||
dialogue->text[t_size - 1] = '\0';
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
#include <ncurses.h>
|
||||
#include <stdint.h>
|
||||
#include <widget_core.h>
|
||||
|
||||
#include <utils.h>
|
||||
#define MAX_IDS 64
|
||||
enum g_type { g_content, g_action };
|
||||
enum d_color_scheme { dc_normal, dc_alert };
|
||||
|
||||
@@ -25,6 +26,7 @@ typedef struct {
|
||||
bool needs_destroy;
|
||||
coordinates_t *p_coordinates;
|
||||
enum d_color_scheme color_scheme;
|
||||
d_array_ptr_t id_map;
|
||||
} dialogue_t;
|
||||
|
||||
void init_dialogue(dialogue_t *d, const char title[], const char text[],
|
||||
|
||||
+5
-2
@@ -1,5 +1,6 @@
|
||||
#include "group.h"
|
||||
#include "button.h"
|
||||
#include "d_array.h"
|
||||
#include "fs_file_list.h"
|
||||
#include "input.h"
|
||||
#include "progress_bar.h"
|
||||
@@ -9,6 +10,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <utils.h>
|
||||
|
||||
/* make response -1 */
|
||||
#define MAKE_RESPONSE_M1(args, resp_data, response) \
|
||||
@@ -83,7 +85,7 @@ union current_element {
|
||||
};
|
||||
|
||||
group_t *init_group(WINDOW **win, widget_t *w_parent, group_el_init_t *children,
|
||||
enum g_direction direction) {
|
||||
d_array_ptr_t *id_map, enum g_direction direction) {
|
||||
group_t *group = malloc(sizeof(group_t));
|
||||
union current_element current;
|
||||
group->parent_group = NULL;
|
||||
@@ -118,7 +120,7 @@ group_t *init_group(WINDOW **win, widget_t *w_parent, group_el_init_t *children,
|
||||
break;
|
||||
case w_group:
|
||||
elements[i].element = init_group(win, &(group->w), children[i].children,
|
||||
children[i].direction);
|
||||
id_map, children[i].direction);
|
||||
w = &(((group_t *)elements[i].element)->w);
|
||||
current.group = (group_t *)elements[i].element;
|
||||
current.group->parent_group = group;
|
||||
@@ -155,6 +157,7 @@ group_t *init_group(WINDOW **win, widget_t *w_parent, group_el_init_t *children,
|
||||
}
|
||||
/* set dimensions */
|
||||
elements[i].id = w->id;
|
||||
add_d_arr_ptr(id_map, &(elements[i]), w->id);
|
||||
if (direction == horizontal) {
|
||||
w->m_x = group->w.m_x + 1 + group->w.x;
|
||||
w->m_y = group->w.m_y;
|
||||
|
||||
+3
-2
@@ -3,6 +3,7 @@
|
||||
|
||||
#include <stdint.h>
|
||||
#include <widget_core.h>
|
||||
#include <utils.h>
|
||||
|
||||
enum g_direction {
|
||||
horizontal,
|
||||
@@ -26,7 +27,7 @@ typedef struct group_el_init_t {
|
||||
struct group_el_init_t *children;
|
||||
} group_el_init_t;
|
||||
|
||||
typedef struct group_t{
|
||||
typedef struct group_t {
|
||||
widget_t w;
|
||||
group_el_t *elements;
|
||||
enum g_direction direction;
|
||||
@@ -40,7 +41,7 @@ typedef struct group_t{
|
||||
element_ptr = &(g->elements[element_idx]);
|
||||
|
||||
group_t *init_group(WINDOW **win, widget_t *w_parent, group_el_init_t *children,
|
||||
enum g_direction dir);
|
||||
d_array_ptr_t *id_map, enum g_direction dir);
|
||||
void draw_group(WINDOW *win, group_t *group, int32_t active_id);
|
||||
void destroy_group(group_t *group);
|
||||
void group_default_callback(callback_args_t *args);
|
||||
|
||||
@@ -8,5 +8,4 @@
|
||||
#include "group.h"
|
||||
#include "input.h"
|
||||
#include "progress_bar.h"
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user