diff --git a/README.md b/README.md new file mode 100644 index 0000000..9f09a4d --- /dev/null +++ b/README.md @@ -0,0 +1,46 @@ +# Pop.Box + +*Do not mix with [Cola][1].* + +Pop.Box is a GUI library for use in the [LÖVE][2] engine, designed to be easy to +use and require as little code as possible to set up. It is primarily designed +to make it easy to experiment with GUIs during development. + +## Features + +- Quickly set up and align GUI elements. +- Fully customizable alignment / styling. +- Moving/resizing elements takes alignment into account. +- Extensible: Make your own elements, skins, extensions, and everything is + automatically loaded. + +## Usage + +The basics: + +```lua +local pop = require "pop" +-- define LÖVE callbacks here (update, draw, textinput, mouse/key events) +local window = pop.window():align("center"):setTitle("Welcome!") +window:addChild(pop.text("Welcome to Pop.Box()!")) +``` + +For more examples, see the code in `demo`. For documentation, see `docs`. + +# Documentation + +**Note**: Docs not written just yet. Will be soon. + +- [Pop Module][3] (The main module/interface.) +- [Elements][4] (Basic features of elements/types of elements.) +- [Skins][5] (A basic system for quickly applying settings to many elements.) +- [Extensions][7] (A way to load custom code in.) +- [Drawables][6] (Reference for what can be used as a background/color.) + +[1]: https://en.wikipedia.org/wiki/Cola_(programming_language) +[2]: https://love2d.org/ +[3]: ./docs/Pop.md +[4]: ./docs/Elements.md +[5]: ./docs/Skins.md +[6]: ./docs/Drawables.md +[7]: ./docs/Extensions.md diff --git a/src/pop/elements/element.moon b/src/pop/elements/element.moon index 9d5e3af..d8a4df6 100644 --- a/src/pop/elements/element.moon +++ b/src/pop/elements/element.moon @@ -43,6 +43,9 @@ class element return @ + getChildren: => + return @child + move: (x, y) => if x @x = @x + x diff --git a/src/pop/elements/window.moon b/src/pop/elements/window.moon index d576952..2447ec0 100644 --- a/src/pop/elements/window.moon +++ b/src/pop/elements/window.moon @@ -7,7 +7,7 @@ box = require "#{path}/box" text = require "#{path}/text" -- version compatibility -left = 1 -- what is the left mouse button? +left = 1 -- what is the left mouse button? mousemoved_event = true -- is the mousemoved event available? do @@ -47,6 +47,7 @@ class window extends element @setSize 100, 80 -- our child elements are still child elements + --TODO change title to be a child of head ? @child = { @head, @title, @window } @@ -108,6 +109,15 @@ class window extends element return @ + addChild: (child) => + @window.child[#@window.child+1] = child + child.parent = @window + + return @ + + getChildren: => + return @window.child + --update: => -- if selected, set position based on current mouse position relative to position it was when mousepressed