From 535fc73860b1bb16ae6816680729091f410fd177 Mon Sep 17 00:00:00 2001 From: Yves Rizoud Date: Sun, 12 Sep 2010 22:11:42 +0000 Subject: [PATCH] Lua: function 'selectbox' with multiple user-defined buttons git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1615 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- src/factory.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/src/factory.c b/src/factory.c index 239b9312..054acca6 100644 --- a/src/factory.c +++ b/src/factory.c @@ -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 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