2024-05-13 15:31:58 +00:00
|
|
|
|
|
|
|
|
|
|
|
#include "mii_mui_utils.h"
|
|
|
|
|
|
|
|
int
|
|
|
|
mii_mui_fileselect_widget( //
|
|
|
|
mii_mui_file_select_t *out,
|
|
|
|
mui_window_t *w,
|
|
|
|
c2_rect_t *where,
|
|
|
|
const char *enclosing_box_title,
|
|
|
|
const char *button_title,
|
|
|
|
const char *checkbox_title)
|
|
|
|
{
|
|
|
|
mui_t *ui = w->ui;
|
|
|
|
float base_size = mui_font_find(ui, "main")->size;
|
|
|
|
float icons_size = mui_font_find(ui, "icon_small")->size;
|
|
|
|
float margin = base_size * 0.7;
|
|
|
|
|
|
|
|
mui_control_t * c = NULL;
|
|
|
|
c2_rect_t cf;
|
|
|
|
c2_rect_t cp = *where;
|
2024-09-07 17:27:31 +00:00
|
|
|
cp.b = cp.t + base_size * 3;
|
2024-05-13 15:31:58 +00:00
|
|
|
where->b = cp.b;
|
|
|
|
const int but_width = 100;
|
|
|
|
cp.r = where->r - margin * 2 - but_width;
|
|
|
|
|
2024-09-07 17:27:31 +00:00
|
|
|
const int label_size = base_size * 1.85;
|
2024-05-13 15:31:58 +00:00
|
|
|
c2_rect_set(&cf, margin, (margin / 2),
|
|
|
|
c2_rect_width(&w->frame) - margin - but_width,
|
2024-09-07 17:27:31 +00:00
|
|
|
(margin/2) + label_size);
|
2024-05-13 15:31:58 +00:00
|
|
|
out->box = c = mui_groupbox_new(w, cp,
|
|
|
|
enclosing_box_title, MUI_CONTROL_TEXTBOX_FRAME);
|
2024-09-07 17:27:31 +00:00
|
|
|
c2_rect_bottom_of(&cf, cp.t,
|
|
|
|
(c2_rect_height(&cf) / 2));
|
2024-05-13 15:31:58 +00:00
|
|
|
c2_rect_right_of(&cf, cp.l, margin * 0.5);
|
2024-09-07 17:27:31 +00:00
|
|
|
//cf.b = cf.t + icons_size;
|
2024-05-13 15:31:58 +00:00
|
|
|
cf.r = cf.l + icons_size;
|
|
|
|
out->icon = c = mui_textbox_new(w, cf,
|
|
|
|
MUI_ICON_FILE, "icon_small",
|
|
|
|
MUI_TEXT_ALIGN_MIDDLE | MUI_TEXT_ALIGN_CENTER | 0);
|
|
|
|
c->state = MUI_CONTROL_STATE_DISABLED;
|
2024-09-07 17:27:31 +00:00
|
|
|
cf.l = cf.r + 5;
|
2024-05-13 15:31:58 +00:00
|
|
|
cf.r = cp.r - margin * 0.5;
|
2024-09-07 17:27:31 +00:00
|
|
|
cf.b = cf.t + label_size;
|
2024-05-13 15:31:58 +00:00
|
|
|
out->fname = c = mui_textbox_new(w, cf,
|
|
|
|
"Click \"Select\" to pick a file", NULL,
|
2024-09-07 17:27:31 +00:00
|
|
|
MUI_TEXT_ALIGN_MIDDLE|0);
|
2024-05-13 15:31:58 +00:00
|
|
|
c->state = MUI_CONTROL_STATE_DISABLED;
|
|
|
|
|
|
|
|
c2_rect_right_of(&cf, cp.r, margin);
|
|
|
|
cf.r = where->r - margin * 0.5;
|
2024-09-07 17:27:31 +00:00
|
|
|
cf.b = cf.t + base_size * 1.1;
|
|
|
|
c2_rect_offset(&cf, 0, (c2_rect_height(&cf) / 2.5));
|
2024-05-13 15:31:58 +00:00
|
|
|
c2_rect_inset(&cf, -4,-4);
|
|
|
|
out->button = c = mui_button_new(w,
|
|
|
|
cf, MUI_BUTTON_STYLE_NORMAL,
|
|
|
|
button_title , 0);
|
|
|
|
if (checkbox_title) {
|
|
|
|
c2_rect_bottom_of(&cf, cp.b, margin * 0.4);
|
|
|
|
cf.l = cp.l + (margin * 0.7);
|
|
|
|
cf.r = cf.l + 200;
|
|
|
|
cf.b = cf.t + base_size;
|
|
|
|
where->b = cf.b;
|
|
|
|
out->checkbox = c = mui_button_new(w,
|
|
|
|
cf, MUI_BUTTON_STYLE_CHECKBOX,
|
|
|
|
checkbox_title, 0);
|
|
|
|
c2_rect_right_of(&cf, cf.r, margin * 0.5);
|
|
|
|
cf.r = c2_rect_width(&w->frame) - margin * 1.2;
|
|
|
|
out->warning = c = mui_textbox_new(w, cf,
|
|
|
|
"", NULL,
|
|
|
|
MUI_TEXT_ALIGN_MIDDLE|MUI_TEXT_ALIGN_RIGHT);
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|