mirror of
https://github.com/linux-man/LoveFrames.git
synced 2024-11-18 16:04:22 +00:00
Version 0.9.4.1 - Alpha (see changelog.txt)
This commit is contained in:
parent
851a7feb46
commit
c6196570e5
@ -1,3 +1,15 @@
|
|||||||
|
================================================
|
||||||
|
Version 0.9.4.1 - Alpha (October 25 - 2012)
|
||||||
|
================================================
|
||||||
|
[ADDED] support for using the delete key in text input objects
|
||||||
|
|
||||||
|
[FIXED] textinupt:GetText() only returning the first line of a multiline text input
|
||||||
|
[FIXED] an error that occurred when clicking a multiline text input object after setting the object's text to an empty string with textinput:SetText("")
|
||||||
|
[FIXED] incorrect positioning of the text input object's indicator when using the left or right arrow keys to move the object's indicator to a different line
|
||||||
|
[FIXED] the text input object not creating a new line correctly in certain situations
|
||||||
|
|
||||||
|
[CHANGED] textinput:GetText() now returns the object's text with line breaks
|
||||||
|
|
||||||
================================================
|
================================================
|
||||||
Version 0.9.4 - Alpha (October 22 - 2012)
|
Version 0.9.4 - Alpha (October 22 - 2012)
|
||||||
================================================
|
================================================
|
||||||
|
2
init.lua
2
init.lua
@ -9,7 +9,7 @@ loveframes = {}
|
|||||||
-- library info
|
-- library info
|
||||||
loveframes.info = {}
|
loveframes.info = {}
|
||||||
loveframes.info.author = "Nikolai Resokav"
|
loveframes.info.author = "Nikolai Resokav"
|
||||||
loveframes.info.version = "0.9.4"
|
loveframes.info.version = "0.9.4.1"
|
||||||
loveframes.info.stage = "Alpha"
|
loveframes.info.stage = "Alpha"
|
||||||
|
|
||||||
-- library configurations
|
-- library configurations
|
||||||
|
@ -467,10 +467,10 @@ function textinput:RunKey(key, unicode)
|
|||||||
self.unicode = unicode
|
self.unicode = unicode
|
||||||
|
|
||||||
if key == "left" then
|
if key == "left" then
|
||||||
self:MoveIndicator(-1)
|
|
||||||
local indicatorx = self.indicatorx
|
local indicatorx = self.indicatorx
|
||||||
indicatornum = self.indicatornum
|
indicatornum = self.indicatornum
|
||||||
if not multiline then
|
if not multiline then
|
||||||
|
self:MoveIndicator(-1)
|
||||||
if indicatorx <= self.x and indicatornum ~= 0 then
|
if indicatorx <= self.x and indicatornum ~= 0 then
|
||||||
local width = self.font:getWidth(text:sub(indicatornum, indicatornum + 1))
|
local width = self.font:getWidth(text:sub(indicatornum, indicatornum + 1))
|
||||||
self.offsetx = self.offsetx - width
|
self.offsetx = self.offsetx - width
|
||||||
@ -484,13 +484,15 @@ function textinput:RunKey(key, unicode)
|
|||||||
local numchars = #lines[self.line]
|
local numchars = #lines[self.line]
|
||||||
self:MoveIndicator(numchars)
|
self:MoveIndicator(numchars)
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
self:MoveIndicator(-1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
elseif key == "right" then
|
elseif key == "right" then
|
||||||
self:MoveIndicator(1)
|
|
||||||
local indicatorx = self.indicatorx
|
local indicatorx = self.indicatorx
|
||||||
indicatornum = self.indicatornum
|
indicatornum = self.indicatornum
|
||||||
if not multiline then
|
if not multiline then
|
||||||
|
self:MoveIndicator(1)
|
||||||
if indicatorx >= (self.x + swidth) and indicatornum ~= #text then
|
if indicatorx >= (self.x + swidth) and indicatornum ~= #text then
|
||||||
local width = self.font:getWidth(text:sub(indicatornum, indicatornum))
|
local width = self.font:getWidth(text:sub(indicatornum, indicatornum))
|
||||||
self.offsetx = self.offsetx + width
|
self.offsetx = self.offsetx + width
|
||||||
@ -503,6 +505,8 @@ function textinput:RunKey(key, unicode)
|
|||||||
self.line = line + 1
|
self.line = line + 1
|
||||||
self:MoveIndicator(0, true)
|
self:MoveIndicator(0, true)
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
self:MoveIndicator(1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
elseif key == "up" then
|
elseif key == "up" then
|
||||||
@ -510,7 +514,7 @@ function textinput:RunKey(key, unicode)
|
|||||||
if line > 1 then
|
if line > 1 then
|
||||||
self.line = line - 1
|
self.line = line - 1
|
||||||
if indicatornum > #lines[self.line] then
|
if indicatornum > #lines[self.line] then
|
||||||
indicatornum = #lines[self.line]
|
self.indicatornum = #lines[self.line]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -519,7 +523,7 @@ function textinput:RunKey(key, unicode)
|
|||||||
if line < #lines then
|
if line < #lines then
|
||||||
self.line = line + 1
|
self.line = line + 1
|
||||||
if indicatornum > #lines[self.line] then
|
if indicatornum > #lines[self.line] then
|
||||||
indicatornum = #lines[self.line]
|
self.indicatornum = #lines[self.line]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -530,13 +534,12 @@ function textinput:RunKey(key, unicode)
|
|||||||
if not editable then
|
if not editable then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local curindicatornum = self.indicatornum
|
|
||||||
if alltextselected then
|
if alltextselected then
|
||||||
self:Clear()
|
self:Clear()
|
||||||
self.alltextselected = false
|
self.alltextselected = false
|
||||||
indicatornum = self.indicatornum
|
indicatornum = self.indicatornum
|
||||||
else
|
else
|
||||||
if text ~= "" then
|
if text ~= "" and indicatornum ~= 0 then
|
||||||
text = self:RemoveFromeText(indicatornum)
|
text = self:RemoveFromeText(indicatornum)
|
||||||
self:MoveIndicator(-1)
|
self:MoveIndicator(-1)
|
||||||
if ontextchanged then
|
if ontextchanged then
|
||||||
@ -545,7 +548,7 @@ function textinput:RunKey(key, unicode)
|
|||||||
lines[line] = text
|
lines[line] = text
|
||||||
end
|
end
|
||||||
if multiline then
|
if multiline then
|
||||||
if line > 1 and curindicatornum == 0 then
|
if line > 1 and indicatornum == 0 then
|
||||||
local newindicatornum = 0
|
local newindicatornum = 0
|
||||||
local oldtext = lines[line]
|
local oldtext = lines[line]
|
||||||
table.remove(lines, line)
|
table.remove(lines, line)
|
||||||
@ -564,6 +567,28 @@ function textinput:RunKey(key, unicode)
|
|||||||
self.offsetx = self.offsetx - cwidth
|
self.offsetx = self.offsetx - cwidth
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
elseif key == "delete" then
|
||||||
|
if alltextselected then
|
||||||
|
self:Clear()
|
||||||
|
self.alltextselected = false
|
||||||
|
indicatornum = self.indicatornum
|
||||||
|
else
|
||||||
|
if text ~= "" and indicatornum < #text then
|
||||||
|
text = self:RemoveFromeText(indicatornum + 1)
|
||||||
|
if ontextchanged then
|
||||||
|
ontextchanged(self, "")
|
||||||
|
end
|
||||||
|
lines[line] = text
|
||||||
|
elseif indicatornum == #text and line < #lines then
|
||||||
|
local oldtext = lines[line + 1]
|
||||||
|
if #oldtext > 0 then
|
||||||
|
newindicatornum = #lines[self.line]
|
||||||
|
lines[self.line] = lines[self.line] .. oldtext
|
||||||
|
end
|
||||||
|
table.remove(lines, line + 1)
|
||||||
|
print(indicatornum, #text)
|
||||||
|
end
|
||||||
|
end
|
||||||
elseif key == "return" or key == "kpenter" then
|
elseif key == "return" or key == "kpenter" then
|
||||||
|
|
||||||
-- call onenter if it exists
|
-- call onenter if it exists
|
||||||
@ -583,7 +608,7 @@ function textinput:RunKey(key, unicode)
|
|||||||
if indicatornum == 0 then
|
if indicatornum == 0 then
|
||||||
newtext = self.lines[line]
|
newtext = self.lines[line]
|
||||||
self.lines[line] = ""
|
self.lines[line] = ""
|
||||||
elseif indicatornum > 1 and indicatornum < #self.lines[line] then
|
elseif indicatornum > 0 and indicatornum < #self.lines[line] then
|
||||||
newtext = self.lines[line]:sub(indicatornum + 1, #self.lines[line])
|
newtext = self.lines[line]:sub(indicatornum + 1, #self.lines[line])
|
||||||
self.lines[line] = self.lines[line]:sub(1, indicatornum)
|
self.lines[line] = self.lines[line]:sub(1, indicatornum)
|
||||||
end
|
end
|
||||||
@ -800,14 +825,10 @@ function textinput:RemoveFromeText(p)
|
|||||||
local text = curline
|
local text = curline
|
||||||
local indicatornum = self.indicatornum
|
local indicatornum = self.indicatornum
|
||||||
|
|
||||||
if indicatornum ~= 0 then
|
|
||||||
local part1 = text:sub(1, p - 1)
|
local part1 = text:sub(1, p - 1)
|
||||||
local part2 = text:sub(p + 1)
|
local part2 = text:sub(p + 1)
|
||||||
local new = part1 .. part2
|
local new = part1 .. part2
|
||||||
return new
|
return new
|
||||||
end
|
|
||||||
|
|
||||||
return text
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -1109,7 +1130,11 @@ function textinput:SetText(text)
|
|||||||
if multiline then
|
if multiline then
|
||||||
text = text:gsub(string.char(92) .. string.char(110), string.char(10))
|
text = text:gsub(string.char(92) .. string.char(110), string.char(10))
|
||||||
local t = loveframes.util.SplitString(text, string.char(10))
|
local t = loveframes.util.SplitString(text, string.char(10))
|
||||||
self.lines = t
|
if #t > 0 then
|
||||||
|
self.lines = t
|
||||||
|
else
|
||||||
|
self.lines = {""}
|
||||||
|
end
|
||||||
else
|
else
|
||||||
text = text:gsub(string.char(92) .. string.char(110), "")
|
text = text:gsub(string.char(92) .. string.char(110), "")
|
||||||
text = text:gsub(string.char(10), "")
|
text = text:gsub(string.char(10), "")
|
||||||
@ -1125,13 +1150,13 @@ end
|
|||||||
--]]---------------------------------------------------------
|
--]]---------------------------------------------------------
|
||||||
function textinput:GetText()
|
function textinput:GetText()
|
||||||
|
|
||||||
local multiline = self.mutliline
|
local multiline = self.multiline
|
||||||
local lines = self.lines
|
local lines = self.lines
|
||||||
local text = ""
|
local text = ""
|
||||||
|
|
||||||
if multiline then
|
if multiline then
|
||||||
for k, v in ipairs(lines) do
|
for k, v in ipairs(lines) do
|
||||||
text = text .. v
|
text = text .. v .. "\n"
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
text = lines[1]
|
text = lines[1]
|
||||||
|
@ -112,8 +112,6 @@ skin.controls.multichoicerow_text_font = smallfont
|
|||||||
-- tooltip
|
-- tooltip
|
||||||
skin.controls.tooltip_border_color = bordercolor
|
skin.controls.tooltip_border_color = bordercolor
|
||||||
skin.controls.tooltip_body_color = {255, 255, 255, 255}
|
skin.controls.tooltip_body_color = {255, 255, 255, 255}
|
||||||
skin.controls.tooltip_text_color = {0, 0, 0, 255}
|
|
||||||
skin.controls.tooltip_text_font = smallfont
|
|
||||||
|
|
||||||
-- text input
|
-- text input
|
||||||
skin.controls.textinput_border_color = bordercolor
|
skin.controls.textinput_border_color = bordercolor
|
||||||
@ -946,13 +944,11 @@ function skin.DrawToolTip(object)
|
|||||||
local height = object:GetHeight()
|
local height = object:GetHeight()
|
||||||
local bodycolor = skin.controls.tooltip_body_color
|
local bodycolor = skin.controls.tooltip_body_color
|
||||||
local bordercolor = skin.controls.tooltip_border_color
|
local bordercolor = skin.controls.tooltip_border_color
|
||||||
local textcolor = skin.controls.tooltip_text_color
|
|
||||||
|
|
||||||
love.graphics.setColor(unpack(bodycolor))
|
love.graphics.setColor(unpack(bodycolor))
|
||||||
love.graphics.rectangle("fill", x, y, width, height)
|
love.graphics.rectangle("fill", x, y, width, height)
|
||||||
love.graphics.setColor(unpack(bordercolor))
|
love.graphics.setColor(unpack(bordercolor))
|
||||||
skin.OutlinedRectangle(x, y, width, height)
|
skin.OutlinedRectangle(x, y, width, height)
|
||||||
love.graphics.setColor(unpack(textcolor))
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -112,8 +112,6 @@ skin.controls.multichoicerow_text_font = smallfont
|
|||||||
-- tooltip
|
-- tooltip
|
||||||
skin.controls.tooltip_border_color = bordercolor
|
skin.controls.tooltip_border_color = bordercolor
|
||||||
skin.controls.tooltip_body_color = {255, 255, 255, 255}
|
skin.controls.tooltip_body_color = {255, 255, 255, 255}
|
||||||
skin.controls.tooltip_text_color = {0, 0, 0, 255}
|
|
||||||
skin.controls.tooltip_text_font = smallfont
|
|
||||||
|
|
||||||
-- text input
|
-- text input
|
||||||
skin.controls.textinput_border_color = bordercolor
|
skin.controls.textinput_border_color = bordercolor
|
||||||
@ -946,13 +944,11 @@ function skin.DrawToolTip(object)
|
|||||||
local height = object:GetHeight()
|
local height = object:GetHeight()
|
||||||
local bodycolor = skin.controls.tooltip_body_color
|
local bodycolor = skin.controls.tooltip_body_color
|
||||||
local bordercolor = skin.controls.tooltip_border_color
|
local bordercolor = skin.controls.tooltip_border_color
|
||||||
local textcolor = skin.controls.tooltip_text_color
|
|
||||||
|
|
||||||
love.graphics.setColor(unpack(bodycolor))
|
love.graphics.setColor(unpack(bodycolor))
|
||||||
love.graphics.rectangle("fill", x, y, width, height)
|
love.graphics.rectangle("fill", x, y, width, height)
|
||||||
love.graphics.setColor(unpack(bordercolor))
|
love.graphics.setColor(unpack(bordercolor))
|
||||||
skin.OutlinedRectangle(x, y, width, height)
|
skin.OutlinedRectangle(x, y, width, height)
|
||||||
love.graphics.setColor(unpack(textcolor))
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user