static gint luaH_box_pack(lua_State *L) { widget_t *w = luaH_checkwidget(L, 1); widget_t *child = luaH_checkwidget(L, 2); gint top = lua_gettop(L); gboolean expand = FALSE, fill = FALSE, start = TRUE; guint padding = 0; /* check for options table */ if (top > 2 && !lua_isnil(L, 3)) { luaH_checktable(L, 3); /* pack child from start or end of container? */ if (luaH_rawfield(L, 3, "from")) start = L_TK_END == l_tokenize(lua_tostring(L, -1)) ? FALSE : TRUE; /* expand? */ if (luaH_rawfield(L, 3, "expand")) expand = lua_toboolean(L, -1) ? TRUE : FALSE; /* fill? */ if (luaH_rawfield(L, 3, "fill")) fill = lua_toboolean(L, -1) ? TRUE : FALSE; /* padding? */ if (luaH_rawfield(L, 3, "padding")) padding = (guint)lua_tonumber(L, -1); /* return stack to original state */ lua_settop(L, top); } if (start) gtk_box_pack_start(GTK_BOX(w->widget), GTK_WIDGET(child->widget), expand, fill, padding); else gtk_box_pack_end(GTK_BOX(w->widget), GTK_WIDGET(child->widget), expand, fill, padding); return 0; }
static gint luaH_label_set_padding(lua_State *L, widget_t *w) { luaH_checktable(L, 3); /* get old padding values */ gint xpad = 0, ypad = 0; gtk_misc_get_padding(GTK_MISC(w->widget), &xpad, &ypad); /* get padding.x */ if (luaH_rawfield(L, 3, "x")) { xpad = (gint) lua_tonumber(L, -1); lua_pop(L, 1); } /* get padding.y */ if (luaH_rawfield(L, 3, "y")) { ypad = (gint) lua_tonumber(L, -1); lua_pop(L, 1); } gtk_misc_set_padding(GTK_MISC(w->widget), xpad, ypad); return 0; }
static gint luaH_label_set_align(lua_State *L, widget_t *w) { luaH_checktable(L, 3); /* get old alignment values */ gfloat xalign, yalign; gtk_misc_get_alignment(GTK_MISC(w->widget), &xalign, &yalign); /* get align.x */ if (luaH_rawfield(L, 3, "x")) { xalign = (gfloat) lua_tonumber(L, -1); lua_pop(L, 1); } /* get align.y */ if (luaH_rawfield(L, 3, "y")) { yalign = (gfloat) lua_tonumber(L, -1); lua_pop(L, 1); } gtk_misc_set_alignment(GTK_MISC(w->widget), xalign, yalign); return 0; }