Convert nm_messagebox_str to use messagebox_newmenu
This commit is contained in:
parent
496aba9886
commit
212400d140
|
@ -502,7 +502,6 @@ int newmenu_get_citem(newmenu *menu);
|
|||
|
||||
typedef cstring_tie<5> nm_messagebox_tie;
|
||||
|
||||
int nm_messagebox_str(menu_title title, const nm_messagebox_tie &tie, menu_subtitle str);
|
||||
int vnm_messagebox_aN(menu_title title, const nm_messagebox_tie &tie, const char *format, ...) __attribute_format_printf(3, 4);
|
||||
|
||||
void nm_draw_background(grs_canvas &, int x1, int y1, int x2, int y2);
|
||||
|
@ -530,6 +529,16 @@ void nm_draw_background(grs_canvas &, int x1, int y1, int x2, int y2);
|
|||
|
||||
namespace dcx {
|
||||
|
||||
int nm_messagebox_str(menu_title title, const nm_messagebox_tie &tie, menu_subtitle str);
|
||||
|
||||
struct messagebox_newmenu :
|
||||
std::array<newmenu_item, nm_messagebox_tie::maximum_arity>,
|
||||
newmenu
|
||||
{
|
||||
messagebox_newmenu(const menu_title title, const menu_subtitle subtitle, const nm_messagebox_tie &tie, grs_canvas &canvas);
|
||||
static adjusted_citem create_adjusted_citem(std::array<newmenu_item, nm_messagebox_tie::maximum_arity> &items, const nm_messagebox_tie &tie);
|
||||
};
|
||||
|
||||
struct listbox : listbox_layout, window
|
||||
{
|
||||
listbox(int citem, unsigned nitems, const char **item, menu_title title, grs_canvas &canvas, uint8_t allow_abort_flag);
|
||||
|
|
|
@ -1657,13 +1657,25 @@ int (vnm_messagebox_aN)(const menu_title title, const nm_messagebox_tie &tie, co
|
|||
return nm_messagebox_str(title, tie, menu_subtitle{nm_text});
|
||||
}
|
||||
|
||||
namespace dcx {
|
||||
|
||||
int nm_messagebox_str(const menu_title title, const nm_messagebox_tie &tie, const menu_subtitle subtitle)
|
||||
{
|
||||
std::array<newmenu_item, nm_messagebox_tie::maximum_arity> items;
|
||||
auto wind = window_create<messagebox_newmenu>(title, subtitle, tie, grd_curscreen->sc_canvas);
|
||||
return newmenu::process_until_closed(wind);
|
||||
}
|
||||
|
||||
messagebox_newmenu::messagebox_newmenu(const menu_title title, const menu_subtitle subtitle, const nm_messagebox_tie &tie, grs_canvas &canvas) :
|
||||
newmenu(title, subtitle, menu_filename{nullptr}, tiny_mode_flag::normal, tab_processing_flag::ignore, create_adjusted_citem(*this, tie), canvas)
|
||||
{
|
||||
}
|
||||
|
||||
messagebox_newmenu::adjusted_citem messagebox_newmenu::create_adjusted_citem(std::array<newmenu_item, nm_messagebox_tie::maximum_arity> &items, const nm_messagebox_tie &tie)
|
||||
{
|
||||
auto &&item_range = partial_range(items, tie.count());
|
||||
for (auto &&[i, s] : zip(item_range, tie))
|
||||
nm_set_item_menu(i, s);
|
||||
return newmenu_do2(title, subtitle, item_range, unused_newmenu_subfunction, unused_newmenu_userdata);
|
||||
return adjusted_citem::create(item_range, 0);
|
||||
}
|
||||
|
||||
// Example listbox callback function...
|
||||
|
@ -1689,8 +1701,6 @@ int nm_messagebox_str(const menu_title title, const nm_messagebox_tie &tie, cons
|
|||
|
||||
#define LB_ITEMS_ON_SCREEN 8
|
||||
|
||||
namespace dcx {
|
||||
|
||||
listbox::listbox(int citem, unsigned nitems, const char **item, menu_title title, grs_canvas &canvas, uint8_t allow_abort_flag) :
|
||||
listbox_layout(citem, nitems, item, title), window(canvas, box_x - BORDERX, box_y - title_height - BORDERY, box_w + 2 * BORDERX, height + 2 * BORDERY),
|
||||
allow_abort_flag(allow_abort_flag)
|
||||
|
|
Loading…
Reference in a new issue