3,7 → 3,7 |
|
typedef struct |
{ |
uint32_t type; // 1 åñëè íåò ïîäìåíþ ?? |
uint32_t type; // 1 åñëè íåò ïîäìåíþ, ïðîñòî ïóíêò |
|
uint32_t x_w; // âåðõíèé ïóíêò |
uint32_t y_h; |
40,7 → 40,7 |
} menubar; |
|
|
inline menubar* kolibri_menubar(menubar* bar, uint32_t x_w, uint32_t y_h, uint16_t sub_w, uint16_t sub_h, char *menutext, char *subitems, |
inline menubar* kolibri_menubar(menubar* bar, uint32_t x_w, uint32_t y_h, uint16_t sub_w, uint16_t sub_h, char **menutext, |
color_t sel_font, color_t unsel_font, color_t top_bg, color_t top_select, color_t sub_bg, color_t sub_select) |
{ |
static char procinfo[1024]; |
48,15 → 48,22 |
bar->type = 0; |
bar->x_w = x_w; |
bar->y_h = y_h; |
bar->text_pointer = menutext; |
bar->pos_pointer = subitems; |
|
// search last item - double zero |
char *pc = subitems; |
while (*pc) pc = strchr(pc, 0) + 1; |
// count summary length |
char *pc, **mitem; |
int len = 0; |
for(mitem = menutext; *mitem; mitem++) len += strlen(*mitem) + 1; |
|
// copy menu items in needed format |
bar->text_pointer = malloc(len + 1); // need to be freed manual at closing secondary windows with menu |
for (pc = bar->text_pointer, mitem = menutext; *mitem; pc += strlen(*mitem++) + 1) |
strcpy(pc, *mitem); |
*pc = 0; |
bar->text_end = pc; |
bar->pos_pointer = strchr(bar->text_pointer, 0) + 1; |
|
bar->x_w1 = X_Y(x_w >> 16, sub_w); |
bar->y_h1 = X_Y((y_h >> 16) + (y_h & 0xFFFF), sub_h); |
bar->y_h1 = X_Y((y_h >> 16) + (y_h & 0xFFFF), sub_h); |
|
bar->interval = 16; |
bar->font_height = 8; |
72,25 → 79,25 |
return bar; |
} |
|
inline menubar* kolibri_new_menubar(uint32_t x_w, uint32_t y_h, uint16_t sub_w, uint16_t sub_h, char *menutext, char *subitems, |
inline menubar* kolibri_new_menubar(uint32_t x_w, uint32_t y_h, uint16_t sub_w, uint16_t sub_h, char **menutext, |
color_t sel_font, color_t unsel_font, color_t top_bg, color_t top_select, color_t sub_bg, color_t sub_select) |
{ |
menubar *new_bar = (menubar*)malloc(sizeof(menubar)); |
return kolibri_menubar(new_bar, x_w, y_h, sub_w, sub_h, menutext, subitems, sel_font, unsel_font, top_bg, top_select, sub_bg, sub_select); |
return kolibri_menubar(new_bar, x_w, y_h, sub_w, sub_h, menutext, sel_font, unsel_font, top_bg, top_select, sub_bg, sub_select); |
} |
|
inline menubar* kolibri_menubar_def(menubar* bar, uint32_t x_w, uint32_t y_h, uint16_t sub_w, uint16_t sub_h, char *menutext, char *subitems) |
inline menubar* kolibri_menubar_def(menubar* bar, uint32_t x_w, uint32_t y_h, uint16_t sub_w, uint16_t sub_h, char **menutext) |
{ |
return kolibri_menubar(bar, x_w, y_h, sub_w, sub_h, menutext, subitems, |
return kolibri_menubar(bar, x_w, y_h, sub_w, sub_h, menutext, |
kolibri_color_table.color_work_button_text, kolibri_color_table.color_work_text, kolibri_color_table.color_work_area, |
kolibri_color_table.color_work_button, kolibri_color_table.color_work_area, kolibri_color_table.color_work_button); |
kolibri_color_table.color_work_button, kolibri_color_table.color_grab_bar_button, kolibri_color_table.color_work_button); |
} |
|
inline menubar* kolibri_new_menubar_def(uint32_t x_w, uint32_t y_h, uint16_t sub_w, uint16_t sub_h, char *menutext, char *subitems) |
inline menubar* kolibri_new_menubar_def(uint32_t x_w, uint32_t y_h, uint16_t sub_w, uint16_t sub_h, char **menutext) |
{ |
return kolibri_new_menubar(x_w, y_h, sub_w, sub_h, menutext, subitems, |
return kolibri_new_menubar(x_w, y_h, sub_w, sub_h, menutext, |
kolibri_color_table.color_work_button_text, kolibri_color_table.color_work_text, kolibri_color_table.color_work_area, |
kolibri_color_table.color_work_button, kolibri_color_table.color_work_area, kolibri_color_table.color_work_button); |
kolibri_color_table.color_work_button, kolibri_color_table.color_grab_bar_button, kolibri_color_table.color_work_button); |
} |
|
inline void gui_add_menubar(kolibri_window *wnd, menubar* bar) |