diff --git a/includes/interface.h b/includes/interface.h index df1f9e58d..ad007b169 100644 --- a/includes/interface.h +++ b/includes/interface.h @@ -207,6 +207,8 @@ void copytext_ui(pixel *vid_buf, char *top, char *txt, char *copytxt); void info_box(pixel *vid_buf, char *msg); +char *input_ui(pixel *vid_buf, char *title, char *prompt, char *text, char *shadow); + int confirm_ui(pixel *vid_buf, char *top, char *msg, char *btn); void login_ui(pixel *vid_buf); diff --git a/includes/luaconsole.h b/includes/luaconsole.h index 1d956ea3a..723737d2d 100644 --- a/includes/luaconsole.h +++ b/includes/luaconsole.h @@ -37,4 +37,6 @@ int luatpt_set_shortcuts(lua_State* l); int luatpt_delete(lua_State* l); int luatpt_register_step(lua_State* l); int luatpt_unregister_step(lua_State* l); +int luatpt_input(lua_State* l); +int luatpt_message_box(lua_State* l); #endif diff --git a/src/interface.c b/src/interface.c index b6d854e47..86bc0eba2 100644 --- a/src/interface.c +++ b/src/interface.c @@ -820,6 +820,75 @@ void error_ui(pixel *vid_buf, int err, char *txt) } } +char *input_ui(pixel *vid_buf, char *title, char *prompt, char *text, char *shadow) +{ + int xsize = 244; + int ysize = 90; + int edity, editx; + int x0=(XRES-xsize)/2,y0=(YRES-MENUSIZE-ysize)/2,b=1,bq,mx,my; + ui_edit ed; + + edity = y0+50; + editx = x0+12; + + ed.x = editx; + ed.y = edity; + ed.w = xsize - 20; + ed.nx = 1; + ed.def = shadow; + ed.focus = 0; + ed.hide = 0; + ed.cursor = 0; + ed.multiline = 0; + strncpy(ed.str, text, 254); + + while (!sdl_poll()) + { + b = SDL_GetMouseState(&mx, &my); + if (!b) + break; + } + + while (!sdl_poll()) + { + bq = b; + b = SDL_GetMouseState(&mx, &my); + mx /= sdl_scale; + my /= sdl_scale; + + clearrect(vid_buf, x0-2, y0-2, xsize+4, ysize+4); + drawrect(vid_buf, x0, y0, xsize, ysize, 192, 192, 192, 255); + drawtext(vid_buf, x0+8, y0+8, title, 160, 160, 255, 255); + drawtext(vid_buf, x0+8, y0+26, prompt, 255, 255, 255, 255); + + drawrect(vid_buf, ed.x-4, ed.y-5, ed.w+4, 16, 192, 192, 192, 255); + + ui_edit_draw(vid_buf, &ed); + ui_edit_process(mx, my, b, &ed); + + drawtext(vid_buf, x0+5, y0+ysize-11, "OK", 255, 255, 255, 255); + drawrect(vid_buf, x0, y0+ysize-16, xsize, 16, 192, 192, 192, 255); + + sdl_blit(0, 0, (XRES+BARSIZE), YRES+MENUSIZE, vid_buf, (XRES+BARSIZE)); + + if (b && !bq && mx>=x0 && mx<x0+xsize && my>=y0+ysize-16 && my<=y0+ysize) + break; + + if (sdl_key==SDLK_RETURN) + break; + if (sdl_key==SDLK_ESCAPE) + break; + } + + while (!sdl_poll()) + { + b = SDL_GetMouseState(&mx, &my); + if (!b) + break; + } + return mystrdup(ed.str); +} + void info_ui(pixel *vid_buf, char *top, char *txt) { int x0=(XRES-240)/2,y0=(YRES-MENUSIZE)/2,b=1,bq,mx,my; @@ -2618,7 +2687,7 @@ int search_ui(pixel *vid_buf) pixel *thumb_rsdata = NULL; pixel *thumb_imgdata = ptif_unpack(search_thumbs[pos], search_thsizes[pos], &finw, &finh); if(thumb_imgdata!=NULL){ - thumb_rsdata = resample_img(thumb_imgdata, finw, finh, XRES/GRID_S, YRES/GRID_S); + thumb_rsdata = resample_img_nn(thumb_imgdata, finw, finh, XRES/GRID_S, YRES/GRID_S); draw_image(v_buf, thumb_rsdata, gx, gy, XRES/GRID_S, YRES/GRID_S, 255); free(thumb_imgdata); free(thumb_rsdata); diff --git a/src/luaconsole.c b/src/luaconsole.c index 052aa98f4..091b9760a 100644 --- a/src/luaconsole.c +++ b/src/luaconsole.c @@ -30,6 +30,8 @@ void luacon_open(){ {"delete", &luatpt_delete}, {"register_step", &luatpt_register_step}, {"unregister_step", &luatpt_unregister_step}, + {"input", &luatpt_input}, + {"message_box", &luatpt_message_box}, {NULL,NULL} }; @@ -703,4 +705,45 @@ int luatpt_unregister_step(lua_State* l) } return 0; } +int luatpt_input(lua_State* l) +{ + char *prompt, *title, *result, *shadow, *text; + title = mystrdup(luaL_optstring(l, 1, "Title")); + prompt = mystrdup(luaL_optstring(l, 2, "Enter some text:")); + text = mystrdup(luaL_optstring(l, 3, "")); + shadow = mystrdup(luaL_optstring(l, 4, "")); + + if (vid_buf!=NULL) + { + result = input_ui(vid_buf, title, prompt, text, shadow); + lua_pushstring(l, result); + free(result); + free(title); + free(prompt); + free(text); + free(shadow); + return 1; + } + free(title); + free(prompt); + free(text); + free(shadow); + return luaL_error(l, "Screen buffer does not exist"); +} +int luatpt_message_box(lua_State* l) +{ + char *title, *text; + title = mystrdup(luaL_optstring(l, 1, "Title")); + text = mystrdup(luaL_optstring(l, 2, "Message")); + if (vid_buf!=NULL) + { + info_ui(vid_buf, title, text); + free(title); + free(text); + return 0; + } + free(title); + free(text); + return luaL_error(l, "Screen buffer does not exist");; +} #endif diff --git a/src/main.c b/src/main.c index 3dd1f2b48..7c681df3e 100644 --- a/src/main.c +++ b/src/main.c @@ -1741,6 +1741,9 @@ int main(int argc, char *argv[]) http_session_check = http_async_req_start(NULL, "http://" SERVER "/Login.api?Action=CheckSession", NULL, 0, 0); http_auth_headers(http_session_check, svf_user_id, NULL, svf_session_id); } +#ifdef LUACONSOLE + luacon_eval("dofile(\"autorun.lua\")"); //Autorun lua script +#endif while (!sdl_poll()) //the main loop { frameidx++;