ui: advanced positioning system (not finished)

This commit is contained in:
2026-03-10 18:51:56 +02:00
parent 575cc4d93a
commit 791c3055ba
13 changed files with 123 additions and 108 deletions
+11 -11
View File
@@ -10,23 +10,23 @@ ui_progress_bar_t *init_ui_progress_bar(WINDOW **win, widget_t *w_parent) {
init_widget(&pb->w, w_parent, win, "");
pb->procent = 0;
pb->text[0] = '\0';
pb->w.y = 4;
pb->w.x = getmaxx(win_par) / 10 * 9;
pb->w.sz.y = 4;
pb->w.sz.x = getmaxx(win_par) / 10 * 9;
return pb;
}
void draw_ui_progress_bar(ui_progress_bar_t *pb) {
WINDOW *win = *(pb->w.w_parent->parent_win);
uint32_t margin_y = pb->w.m_y + pb->w.w_parent->m_y;
uint32_t margin_x = pb->w.m_x + pb->w.w_parent->m_x + 1;
uint32_t margin_y = pb->w.ps.y + pb->w.w_parent->ps.y;
uint32_t margin_x = pb->w.ps.x + pb->w.w_parent->ps.x + 1;
wattrset(win, COLOR_PAIR(modal_color_pair));
mvwhline(win, margin_y, margin_x, 0, pb->w.x - 1);
mvwhline(win, margin_y, margin_x, 0, pb->w.sz.x - 1);
float procent = pb->procent;
procent /= 100;
uint32_t filled_num = procent * pb->w.x;
uint32_t filled_num = procent * pb->w.sz.x;
if (filled_num > 2) {
filled_num -= 2;
}
@@ -39,17 +39,17 @@ void draw_ui_progress_bar(ui_progress_bar_t *pb) {
wattrset(win, COLOR_PAIR(modal_color_pair));
// bottom line
mvwhline(win, margin_y + 3, margin_x, 0, pb->w.x - 1);
mvwhline(win, margin_y + 3, margin_x, 0, pb->w.sz.x - 1);
// left
mvwvline(win, margin_y, margin_x, ACS_ULCORNER, 1);
mvwvline(win, margin_y + 1, margin_x, 0, 1);
mvwvline(win, margin_y + 2, margin_x, 0, 1);
mvwvline(win, margin_y + 3, margin_x, ACS_LLCORNER, 1);
// right
mvwvline(win, margin_y, margin_x + pb->w.x - 2, ACS_URCORNER, 1);
mvwvline(win, margin_y + 1, margin_x + pb->w.x - 2, 0, 1);
mvwvline(win, margin_y + 2, margin_x + pb->w.x - 2, 0, 1);
mvwvline(win, margin_y + 3, margin_x + pb->w.x - 2, ACS_LRCORNER, 1);
mvwvline(win, margin_y, margin_x + pb->w.sz.x - 2, ACS_URCORNER, 1);
mvwvline(win, margin_y + 1, margin_x + pb->w.sz.x - 2, 0, 1);
mvwvline(win, margin_y + 2, margin_x + pb->w.sz.x - 2, 0, 1);
mvwvline(win, margin_y + 3, margin_x + pb->w.sz.x - 2, ACS_LRCORNER, 1);
}
void destroy_ui_progress_bar(void *_pb) {