Skip to content

Commit

Permalink
Merge pull request #32 from megagrump/nk_tree_state
Browse files Browse the repository at this point in the history
Support for nk_tree_state_push/pop
  • Loading branch information
keharriso authored Dec 18, 2018
2 parents 08abd14 + 75da1af commit 5255830
Showing 1 changed file with 63 additions and 0 deletions.
63 changes: 63 additions & 0 deletions src/nuklear_love.c
Original file line number Diff line number Diff line change
Expand Up @@ -2411,6 +2411,65 @@ static int nk_love_tree(lua_State *L)
return 0;
}

static int nk_love_tree_state_push(lua_State *L)
{
int argc = lua_gettop(L);
nk_love_assert_argc(argc >= 3 && argc <= 5);
nk_love_assert_context(1);
enum nk_tree_type type = nk_love_checktree(2);
const char *title = luaL_checkstring(L, 3);
struct nk_image image;
int use_image = 0;
if (argc >= 4 && !lua_isnil(L, 4)) {
nk_love_checkImage(4, &image);
use_image = 1;
}
enum nk_collapse_states state = NK_MINIMIZED;
if (argc >= 5)
state = nk_love_checkstate(5);

int open = 0;
if (use_image)
open = nk_tree_state_image_push(&context->nkctx, type, image, title, &state);
else
open = nk_tree_state_push(&context->nkctx, type, title, &state);
lua_pushboolean(L, open);
return 1;
}

static int nk_love_tree_state_pop(lua_State *L)
{
nk_love_assert_argc(lua_gettop(L) == 1);
nk_love_assert_context(1);
nk_tree_state_pop(&context->nkctx);
return 0;
}

static int nk_love_tree_state(lua_State *L)
{
nk_love_assert(lua_checkstack(L, 3), "%s: failed to allocate stack space");
nk_love_assert_argc(lua_gettop(L) >= 4);
if (!lua_isfunction(L, -1))
luaL_typerror(L, lua_gettop(L), "function");
lua_pushvalue(L, 1);
lua_insert(L, 2);
lua_pushvalue(L, 1);
lua_insert(L, 3);
lua_insert(L, 2);
lua_getfield(L, 1, "treeStatePush");
lua_insert(L, 4);
lua_call(L, lua_gettop(L) - 4, 1);
int open = lua_toboolean(L, -1);
lua_pop(L, 1);
if (open) {
lua_call(L, 1, 0);
lua_getfield(L, 1, "treeStatePop");
lua_insert(L, 1);
lua_call(L, 1, 0);
}
return 0;
}

static int nk_love_color_rgba(lua_State *L)
{
int argc = lua_gettop(L);
Expand Down Expand Up @@ -4383,6 +4442,10 @@ LUALIB_API int luaopen_nuklear(lua_State *luaState)
NK_LOVE_REGISTER("treePop", nk_love_tree_pop);
NK_LOVE_REGISTER("tree", nk_love_tree);

NK_LOVE_REGISTER("treeStatePush", nk_love_tree_state_push);
NK_LOVE_REGISTER("treeStatePop", nk_love_tree_state_pop);
NK_LOVE_REGISTER("treeState", nk_love_tree_state);

NK_LOVE_REGISTER("label", nk_love_label);
NK_LOVE_REGISTER("image", nk_love_image);
NK_LOVE_REGISTER("button", nk_love_button);
Expand Down

0 comments on commit 5255830

Please sign in to comment.