Lua: function 'selectbox' with multiple user-defined buttons
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1615 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
b0d2f9741d
commit
535fc73860
@ -799,6 +799,76 @@ int L_InputBox(lua_State* L)
|
||||
return 1 + nb_settings;
|
||||
}
|
||||
|
||||
int L_SelectBox(lua_State* L)
|
||||
{
|
||||
const int max_settings = 10;
|
||||
const char * label[max_settings];
|
||||
|
||||
const char * window_caption;
|
||||
int caption_length;
|
||||
int nb_args;
|
||||
|
||||
unsigned int max_label_length;
|
||||
int button;
|
||||
int nb_buttons;
|
||||
short clicked_button;
|
||||
//char str[40];
|
||||
//short close_window = 0;
|
||||
|
||||
nb_args = lua_gettop (L);
|
||||
|
||||
if (nb_args < 2)
|
||||
{
|
||||
return luaL_error(L, "selectbox: Less than 2 arguments");
|
||||
}
|
||||
nb_buttons=nb_args-1;
|
||||
|
||||
max_label_length=4; // Minimum size
|
||||
|
||||
// First argument is window caption
|
||||
LUA_ARG_STRING(1, "selectbox", window_caption);
|
||||
caption_length = strlen(window_caption);
|
||||
if ( caption_length > 14)
|
||||
max_label_length = caption_length - 10;
|
||||
|
||||
for (button=0; button<nb_buttons; button++)
|
||||
{
|
||||
LUA_ARG_STRING(button+2, "selectbox", label[button]);
|
||||
if (strlen(label[button]) > max_label_length)
|
||||
max_label_length = strlen(label[button]);
|
||||
}
|
||||
// Max is 25 to keep window under 320 pixel wide
|
||||
if (max_label_length>25)
|
||||
max_label_length=25;
|
||||
|
||||
Update_colors_during_script();
|
||||
Open_window(28+max_label_length*8,26+nb_buttons*17,window_caption);
|
||||
|
||||
for (button=0; button<nb_buttons; button++)
|
||||
{
|
||||
Window_set_normal_button( 7, 22 + 17 * button, 14+max_label_length*8,14,label[button], 0,1,KEY_NONE);
|
||||
}
|
||||
|
||||
Update_window_area(0,0,Window_width, Window_height);
|
||||
Cursor_shape=CURSOR_SHAPE_ARROW;
|
||||
Display_cursor();
|
||||
|
||||
Key=0;
|
||||
do
|
||||
{
|
||||
clicked_button=Window_clicked_button();
|
||||
} while (clicked_button<1 && Key != KEY_ESC);
|
||||
|
||||
Close_window();
|
||||
Cursor_shape=CURSOR_SHAPE_HOURGLASS;
|
||||
Display_cursor();
|
||||
|
||||
// Return value:
|
||||
lua_pushnumber(L, clicked_button);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int L_MessageBox(lua_State* L)
|
||||
{
|
||||
const char * caption;
|
||||
@ -1008,6 +1078,7 @@ void Run_script(char *scriptdir)
|
||||
lua_register(L,"getbrushtransparentcolor",L_GetBrushTransparentColor);
|
||||
lua_register(L,"inputbox",L_InputBox);
|
||||
lua_register(L,"messagebox",L_MessageBox);
|
||||
lua_register(L,"selectbox",L_SelectBox);
|
||||
lua_register(L,"getforecolor",L_GetForeColor);
|
||||
lua_register(L,"getbackcolor",L_GetBackColor);
|
||||
lua_register(L,"gettranscolor",L_GetTransColor);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user