mirror of
https://github.com/TangentFoxy/Pop.Box.git
synced 2024-12-15 12:44:20 +00:00
close #42 (serializable import/export of elements)
This commit is contained in:
parent
bb2cbba024
commit
77ba978d7e
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule "lib/bitser"]
|
||||
path = lib/bitser
|
||||
url = https://github.com/gvx/bitser
|
@ -343,7 +343,7 @@
|
||||
</div> <!-- id="main" -->
|
||||
<div id="about">
|
||||
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
|
||||
<i style="float:right;">Last updated 2016-10-30 22:18:17 </i>
|
||||
<i style="float:right;">Last updated 2016-10-30 23:39:49 </i>
|
||||
</div> <!-- id="about" -->
|
||||
</div> <!-- id="container" -->
|
||||
</body>
|
||||
|
@ -79,7 +79,7 @@
|
||||
</div> <!-- id="main" -->
|
||||
<div id="about">
|
||||
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
|
||||
<i style="float:right;">Last updated 2016-10-30 22:18:17 </i>
|
||||
<i style="float:right;">Last updated 2016-10-30 23:39:49 </i>
|
||||
</div> <!-- id="about" -->
|
||||
</div> <!-- id="container" -->
|
||||
</body>
|
||||
|
@ -490,7 +490,7 @@
|
||||
</div> <!-- id="main" -->
|
||||
<div id="about">
|
||||
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
|
||||
<i style="float:right;">Last updated 2016-10-30 22:18:17 </i>
|
||||
<i style="float:right;">Last updated 2016-10-30 23:39:49 </i>
|
||||
</div> <!-- id="about" -->
|
||||
</div> <!-- id="container" -->
|
||||
</body>
|
||||
|
@ -71,7 +71,7 @@
|
||||
</div> <!-- id="main" -->
|
||||
<div id="about">
|
||||
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
|
||||
<i style="float:right;">Last updated 2016-10-30 22:18:17 </i>
|
||||
<i style="float:right;">Last updated 2016-10-30 23:39:49 </i>
|
||||
</div> <!-- id="about" -->
|
||||
</div> <!-- id="container" -->
|
||||
</body>
|
||||
|
@ -148,7 +148,15 @@ element.parent\focusChild element
|
||||
table.insert element.parent, element.parent\removeChild(element),</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap><a href="#printElementTree-todo4">printElementTree-todo4</a></td>
|
||||
<td class="name" nowrap><a href="#textinput-todo4">textinput-todo4</a></td>
|
||||
<td class="summary">doc me</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap><a href="#textinput-todo4-todo5">textinput-todo4-todo5</a></td>
|
||||
<td class="summary">doc me</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap><a href="#printElementTree-todo6">printElementTree-todo6</a></td>
|
||||
<td class="summary">Correct this once elements are reimplemented if it needs correction.</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -645,8 +653,36 @@ table.insert element.parent, element.parent\removeChild(element),
|
||||
|
||||
</dd>
|
||||
<dt>
|
||||
<a name = "printElementTree-todo4"></a>
|
||||
<strong>printElementTree-todo4</strong>
|
||||
<a name = "textinput-todo4"></a>
|
||||
<strong>textinput-todo4</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
doc me
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
<dt>
|
||||
<a name = "textinput-todo4-todo5"></a>
|
||||
<strong>textinput-todo4-todo5</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
doc me
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
<dt>
|
||||
<a name = "printElementTree-todo6"></a>
|
||||
<strong>printElementTree-todo6</strong>
|
||||
</dt>
|
||||
<dd>
|
||||
Correct this once elements are reimplemented if it needs correction.
|
||||
@ -665,7 +701,7 @@ table.insert element.parent, element.parent\removeChild(element),
|
||||
</div> <!-- id="main" -->
|
||||
<div id="about">
|
||||
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
|
||||
<i style="float:right;">Last updated 2016-10-30 22:18:17 </i>
|
||||
<i style="float:right;">Last updated 2016-10-30 23:39:49 </i>
|
||||
</div> <!-- id="about" -->
|
||||
</div> <!-- id="container" -->
|
||||
</body>
|
||||
|
@ -125,7 +125,7 @@
|
||||
</div> <!-- id="main" -->
|
||||
<div id="about">
|
||||
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
|
||||
<i style="float:right;">Last updated 2016-10-30 22:18:17 </i>
|
||||
<i style="float:right;">Last updated 2016-10-30 23:39:49 </i>
|
||||
</div> <!-- id="about" -->
|
||||
</div> <!-- id="container" -->
|
||||
</body>
|
||||
|
@ -74,6 +74,9 @@ do
|
||||
if self.data.draw == nil then
|
||||
self.data.draw = true
|
||||
end
|
||||
if not (self.data.type) then
|
||||
self.data.type = "element"
|
||||
end
|
||||
self.child = { }
|
||||
end,
|
||||
__base = _base_0,
|
||||
|
@ -22,6 +22,7 @@ class element
|
||||
@data.h = 0 unless @data.h
|
||||
@data.update = false if @data.update == nil
|
||||
@data.draw = true if @data.draw == nil
|
||||
@data.type = "element" unless @data.type
|
||||
|
||||
@child = {}
|
||||
|
||||
|
@ -14,7 +14,10 @@ do
|
||||
data = { }
|
||||
end
|
||||
self.parent, self.data = parent, data
|
||||
return _class_0.__parent.__init(self, self.parent, self.data)
|
||||
_class_0.__parent.__init(self, self.parent, self.data)
|
||||
if self.data.type == "element" then
|
||||
self.data.type = "window"
|
||||
end
|
||||
end,
|
||||
__base = _base_0,
|
||||
__name = "window",
|
||||
|
@ -10,6 +10,8 @@ class window extends element
|
||||
new: (@parent, @data={}) =>
|
||||
super @parent, @data
|
||||
|
||||
@data.type = "window" if @data.type == "element"
|
||||
|
||||
--- @todo if data, do stuff about it
|
||||
|
||||
setSize: =>
|
||||
|
29
init.lua
29
init.lua
@ -29,6 +29,11 @@ local insert
|
||||
insert = table.insert
|
||||
local inheritsFromElement
|
||||
inheritsFromElement = require(tostring(path) .. "/util").inheritsFromElement
|
||||
local dumps, loads
|
||||
do
|
||||
local _obj_0 = require(tostring(path) .. "/lib/bitser/bitser")
|
||||
dumps, loads = _obj_0.dumps, _obj_0.loads
|
||||
end
|
||||
pop.elements = { }
|
||||
pop.skins = { }
|
||||
pop.extensions = { }
|
||||
@ -124,7 +129,6 @@ pop.create = function(element, parent, ...)
|
||||
element = pop.elements[element](parent, ...)
|
||||
insert(parent.child, element)
|
||||
insert(parent.data.child, element.data)
|
||||
element.parent = parent
|
||||
element.data.parent = parent.data
|
||||
elseif parent == false then
|
||||
element = pop.elements[element](false, ...)
|
||||
@ -134,7 +138,6 @@ pop.create = function(element, parent, ...)
|
||||
element = pop.elements[element](pop.screen, parent, ...)
|
||||
insert(pop.screen.child, element)
|
||||
insert(pop.screen.data.child, element.data)
|
||||
element.parent = pop.screen
|
||||
element.data.parent = pop.screen.data
|
||||
end
|
||||
return element
|
||||
@ -252,6 +255,28 @@ pop.textinput = function(text)
|
||||
end
|
||||
return false
|
||||
end
|
||||
pop.import = function(data, parent)
|
||||
if parent == nil then
|
||||
parent = pop.screen
|
||||
end
|
||||
local element
|
||||
if type(data) == "string" then
|
||||
data = loads(data)
|
||||
element = pop.create(data.type, parent, data)
|
||||
else
|
||||
element = pop.elements[data.type](parent, data)
|
||||
insert(parent.child, element)
|
||||
end
|
||||
for i = 1, #data.child do
|
||||
pop.import(data.child[i], element)
|
||||
end
|
||||
end
|
||||
pop.export = function(element)
|
||||
if element == nil then
|
||||
element = pop.screen
|
||||
end
|
||||
return dumps(element.data)
|
||||
end
|
||||
pop.debugDraw = function(element)
|
||||
if element == nil then
|
||||
element = pop.screen
|
||||
|
28
init.moon
28
init.moon
@ -30,6 +30,7 @@ log "Require path detected: \"#{path}\""
|
||||
import filesystem, graphics from love
|
||||
import insert from table
|
||||
import inheritsFromElement from require "#{path}/util"
|
||||
import dumps, loads from require "#{path}/lib/bitser/bitser"
|
||||
|
||||
--- @table pop
|
||||
--- @tfield table elements All GUI classes are stored here.
|
||||
@ -155,7 +156,7 @@ pop.create = (element, parent=pop.screen, ...) ->
|
||||
element = pop.elements[element](parent, ...)
|
||||
insert parent.child, element
|
||||
insert parent.data.child, element.data
|
||||
element.parent = parent --this should already have been set by the element, this is here as a precaution
|
||||
--element.parent = parent
|
||||
element.data.parent = parent.data
|
||||
-- if explicitly no parent, just create the element
|
||||
elseif parent == false
|
||||
@ -167,7 +168,7 @@ pop.create = (element, parent=pop.screen, ...) ->
|
||||
element = pop.elements[element](pop.screen, parent, ...)
|
||||
insert pop.screen.child, element
|
||||
insert pop.screen.data.child, element.data
|
||||
element.parent = pop.screen --this should already have been set by the element, this is here as a precaution
|
||||
--element.parent = pop.screen
|
||||
element.data.parent = pop.screen.data
|
||||
|
||||
return element
|
||||
@ -369,6 +370,29 @@ pop.textinput = (text) ->
|
||||
|
||||
|
||||
|
||||
--- @todo doc me
|
||||
|
||||
pop.import = (data, parent=pop.screen) ->
|
||||
local element
|
||||
if type(data) == "string"
|
||||
data = loads(data)
|
||||
element = pop.create(data.type, parent, data)
|
||||
else
|
||||
element = pop.elements[data.type](parent, data)
|
||||
insert parent.child, element
|
||||
|
||||
for i = 1, #data.child
|
||||
pop.import data.child[i], element
|
||||
|
||||
|
||||
|
||||
--- @todo doc me
|
||||
|
||||
pop.export = (element=pop.screen) ->
|
||||
return dumps(element.data)
|
||||
|
||||
|
||||
|
||||
--- Draws simple rectangle outlines to debug placement of elements.
|
||||
--- @function debugDraw
|
||||
--- @tparam Element element[opt] The element to draw (will draw its children as
|
||||
|
1
lib/bitser
Submodule
1
lib/bitser
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit cf02122d221f5f7d3ebc898110f004cc6b658764
|
Loading…
Reference in New Issue
Block a user