Add menu object

This commit is contained in:
Kenny Shields 2013-12-26 13:30:35 -05:00
parent d38ab2c621
commit c633156334
6 changed files with 666 additions and 30 deletions

View File

@ -32,6 +32,7 @@ Version 0.9.7 - Alpha (Release Date TBD)
[ADDED] a new util library function: GetHoverObject() [ADDED] a new util library function: GetHoverObject()
[ADDED] a new callback: textinput(text) [ADDED] a new callback: textinput(text)
[ADDED] a new object: form [ADDED] a new object: form
[ADDED] a new object: menu
[ADDED] a new skin drawing function: DrawOverTabPanel(object) [ADDED] a new skin drawing function: DrawOverTabPanel(object)
[ADDED] basic clipboard support for the textinput object (0.9.0 only) [ADDED] basic clipboard support for the textinput object (0.9.0 only)
[ADDED] custom cursor support for the textinput object [ADDED] custom cursor support for the textinput object

View File

@ -187,6 +187,24 @@ function loveframes.mousepressed(x, y, button)
local base = loveframes.base local base = loveframes.base
base:mousepressed(x, y, button) base:mousepressed(x, y, button)
-- close open menus
local bchildren = base.children
local hoverobject = loveframes.hoverobject
for k, v in ipairs(bchildren) do
local otype = v.type
local visible = v.visible
if hoverobject then
local htype = hoverobject.type
if otype == "menu" and visible and htype ~= "menu" and htype ~= "menuoption" then
v:SetVisible(false)
end
else
if otype == "menu" and visible then
v:SetVisible(false)
end
end
end
end end
--[[--------------------------------------------------------- --[[---------------------------------------------------------

View File

@ -0,0 +1,233 @@
--[[------------------------------------------------
-- Love Frames - A GUI library for LOVE --
-- Copyright (c) 2013 Kenny Shields --
--]]------------------------------------------------
-- menuoption object
local newobject = loveframes.NewObject("menuoption", "loveframes_object_menuoption", true)
--[[---------------------------------------------------------
- func: initialize()
- desc: initializes the object
--]]---------------------------------------------------------
function newobject:initialize(parent, option_type, menu)
self.type = "menuoption"
self.text = "Option"
self.width = 100
self.height = 25
self.contentwidth = 0
self.contentheight = 0
self.parent = parent
self.option_type = option_type or "option"
self.menu = menu
self.activated = false
self.internal = true
self.icon = false
self.func = nil
end
--[[---------------------------------------------------------
- func: update(deltatime)
- desc: updates the object
--]]---------------------------------------------------------
function newobject:update(dt)
local state = loveframes.state
local selfstate = self.state
if state ~= selfstate then
return
end
local visible = self.visible
local alwaysupdate = self.alwaysupdate
if not visible then
if not alwaysupdate then
return
end
end
self:CheckHover()
local hover = self.hover
local parent = self.parent
local option_type = self.option_type
local base = loveframes.base
local update = self.Update
if option_type == "submenu_activator" then
local activated = self.activated
if hover and not activated then
self.menu:SetVisible(true)
self.menu:SetPos(self:GetX() + self:GetWidth(), self:GetY())
self.activated = true
elseif not hover and activated then
local hoverobject = loveframes.hoverobject
if hoverobject and hoverobject:GetBaseParent() == self.parent then
self.menu:SetVisible(false)
self.activated = false
end
end
end
-- move to parent if there is a parent
if parent ~= base then
self.x = self.parent.x + self.staticx
self.y = self.parent.y + self.staticy
end
if update then
update(self, dt)
end
end
--[[---------------------------------------------------------
- func: draw()
- desc: draws the object
--]]---------------------------------------------------------
function newobject:draw()
local state = loveframes.state
local selfstate = self.state
if state ~= selfstate then
return
end
local visible = self.visible
if not visible then
return
end
local skins = loveframes.skins.available
local skinindex = loveframes.config["ACTIVESKIN"]
local defaultskin = loveframes.config["DEFAULTSKIN"]
local selfskin = self.skin
local skin = skins[selfskin] or skins[skinindex]
local drawfunc = skin.DrawMenuOption or skins[defaultskin].DrawMenuOption
local draw = self.Draw
local drawcount = loveframes.drawcount
-- set the object's draw order
self:SetDrawOrder()
if draw then
draw(self)
else
drawfunc(self)
end
end
--[[---------------------------------------------------------
- func: mousepressed(x, y, button)
- desc: called when the player presses a mouse button
--]]---------------------------------------------------------
function newobject:mousepressed(x, y, button)
local state = loveframes.state
local selfstate = self.state
if state ~= selfstate then
return
end
local visible = self.visible
if not visible then
return
end
end
--[[---------------------------------------------------------
- func: mousereleased(x, y, button)
- desc: called when the player releases a mouse button
--]]---------------------------------------------------------
function newobject:mousereleased(x, y, button)
local state = loveframes.state
local selfstate = self.state
if state ~= selfstate then
return
end
local visible = self.visible
if not visible then
return
end
local hover = self.hover
local option_type = self.option_type
if hover and option_type ~= "divider" and button == "l" then
local func = self.func
if func then
local text = self.text
func(self, text)
end
local basemenu = self.parent:GetBaseMenu()
basemenu:SetVisible(false)
end
end
--[[---------------------------------------------------------
- func: SetText(text)
- desc: sets the object's text
--]]---------------------------------------------------------
function newobject:SetText(text)
self.text = text
end
--[[---------------------------------------------------------
- func: GetText()
- desc: gets the object's text
--]]---------------------------------------------------------
function newobject:GetText()
return self.text
end
--[[---------------------------------------------------------
- func: SetIcon(icon)
- desc: sets the object's icon
--]]---------------------------------------------------------
function newobject:SetIcon(icon)
if type(icon) == "string" then
self.icon = love.graphics.newImage(icon)
elseif type(icon) == "userdata" then
self.icon = icon
end
end
--[[---------------------------------------------------------
- func: GetIcon()
- desc: gets the object's icon
--]]---------------------------------------------------------
function newobject:GetIcon()
return self.icon
end
--[[---------------------------------------------------------
- func: SetFunction(func)
- desc: sets the object's function
--]]---------------------------------------------------------
function newobject:SetFunction(func)
self.func = func
end

292
objects/menu.lua Normal file
View File

@ -0,0 +1,292 @@
--[[------------------------------------------------
-- Love Frames - A GUI library for LOVE --
-- Copyright (c) 2013 Kenny Shields --
--]]------------------------------------------------
-- menu object
local newobject = loveframes.NewObject("menu", "loveframes_object_menu", true)
--[[---------------------------------------------------------
- func: initialize()
- desc: initializes the object
--]]---------------------------------------------------------
function newobject:initialize(menu)
self.type = "menu"
self.width = 80
self.height = 25
self.largest_item_width = 0
self.largest_item_height = 0
self.is_sub_menu = false
self.internal = false
self.parentmenu = nil
self.options = {}
self.internals = {}
end
--[[---------------------------------------------------------
- func: update(deltatime)
- desc: updates the object
--]]---------------------------------------------------------
function newobject:update(dt)
local state = loveframes.state
local selfstate = self.state
if state ~= selfstate then
return
end
local visible = self.visible
local alwaysupdate = self.alwaysupdate
if not visible then
if not alwaysupdate then
return
end
end
self:CheckHover()
local hover = self.hover
local parent = self.parent
local base = loveframes.base
local update = self.Update
-- move to parent if there is a parent
if parent ~= base then
self.x = self.parent.x + self.staticx
self.y = self.parent.y + self.staticy
end
for k, v in ipairs(self.internals) do
local width = v.contentwidth
local height = v.contentheight
if width > self.largest_item_width then
self.largest_item_width = width
end
if height > self.largest_item_height then
self.largest_item_height = height
end
end
local y = 0
self.height = 0
for k, v in ipairs(self.internals) do
v:SetWidth(self.largest_item_width)
if v.option_type ~= "divider" then
v:SetHeight(self.largest_item_height)
else
v:SetHeight(5)
end
v:SetY(y)
self.height = self.height + v.height
y = y + v.height
v:update(dt)
end
self.width = self.largest_item_width
self.largest_item_width = 0
self.largest_item_height = 0
if update then
update(self, dt)
end
end
--[[---------------------------------------------------------
- func: draw()
- desc: draws the object
--]]---------------------------------------------------------
function newobject:draw()
local state = loveframes.state
local selfstate = self.state
if state ~= selfstate then
return
end
local visible = self.visible
if not visible then
return
end
local skins = loveframes.skins.available
local skinindex = loveframes.config["ACTIVESKIN"]
local defaultskin = loveframes.config["DEFAULTSKIN"]
local selfskin = self.skin
local skin = skins[selfskin] or skins[skinindex]
local drawfunc = skin.DrawMenu or skins[defaultskin].DrawMenu
local draw = self.Draw
local drawoverfunc = skin.DrawOverMenu or skins[defaultskin].DrawOverMenu
local drawcount = loveframes.drawcount
-- set the object's draw order
self:SetDrawOrder()
if draw then
draw(self)
else
drawfunc(self)
end
for k, v in ipairs(self.internals) do
v:draw()
end
if drawoverfunc then
drawoverfunc(self)
end
end
--[[---------------------------------------------------------
- func: mousepressed(x, y, button)
- desc: called when the player presses a mouse button
--]]---------------------------------------------------------
function newobject:mousepressed(x, y, button)
local state = loveframes.state
local selfstate = self.state
if state ~= selfstate then
return
end
local visible = self.visible
if not visible then
return
end
end
--[[---------------------------------------------------------
- func: mousereleased(x, y, button)
- desc: called when the player releases a mouse button
--]]---------------------------------------------------------
function newobject:mousereleased(x, y, button)
local state = loveframes.state
local selfstate = self.state
if state ~= selfstate then
return
end
local visible = self.visible
if not visible then
return
end
local internals = self.internals
for k, v in ipairs(internals) do
v:mousereleased(x, y, button)
end
end
--[[---------------------------------------------------------
- func: AddOption(text, icon, func)
- desc: adds an option to the object
--]]---------------------------------------------------------
function newobject:AddOption(text, icon, func)
local menuoption = loveframes.objects["menuoption"]:new(self)
menuoption:SetText(text)
menuoption:SetIcon(icon)
menuoption:SetFunction(func)
table.insert(self.internals, menuoption)
end
--[[---------------------------------------------------------
- func: AddSubMenu(text, icon, menu)
- desc: adds a submenu to the object
--]]---------------------------------------------------------
function newobject:AddSubMenu(text, icon, menu)
local function activatorFunc(object)
if menu:GetVisible() then
local hoverobject = loveframes.hoverobject
if hoverobject ~= object and hoverobject:GetBaseParent() ~= menu then
menu:SetVisible(false)
end
else
menu:SetVisible(true)
menu:SetPos(object:GetX() + object:GetWidth(), object:GetY())
end
end
menu:SetVisible(false)
local menuoption = loveframes.objects["menuoption"]:new(self, "submenu_activator", menu)
menuoption:SetText(text)
menuoption:SetIcon(icon)
if menu then
menu.is_sub_menu = true
menu.parentmenu = self
end
table.insert(self.internals, menuoption)
end
--[[---------------------------------------------------------
- func: AddDivider()
- desc: adds a divider to the object
--]]---------------------------------------------------------
function newobject:AddDivider()
local menuoption = loveframes.objects["menuoption"]:new(self, "divider")
table.insert(self.internals, menuoption)
end
--[[---------------------------------------------------------
- func: GetBaseMenu(t)
- desc: gets the object's base menu
--]]---------------------------------------------------------
function newobject:GetBaseMenu(t)
local t = t or {}
if self.parentmenu then
table.insert(t, self.parentmenu)
self.parentmenu:GetBaseMenu(t)
else
return self
end
return t[#t]
end
--[[---------------------------------------------------------
- func: SetVisible(bool)
- desc: sets the object's visibility
--]]---------------------------------------------------------
function newobject:SetVisible(bool)
self.visible = bool
if not bool then
local internals = self.internals
for k, v in ipairs(internals) do
if v.menu then
v.activated = false
v.menu:SetVisible(bool)
end
end
end
end

View File

@ -104,7 +104,7 @@ skin.controls.checkbox_check_color = {128, 204, 255, 255}
skin.controls.checkbox_text_font = smallfont skin.controls.checkbox_text_font = smallfont
-- collapsiblecategory -- collapsiblecategory
skin.controls.collapsiblecategory_text_color = {0, 0, 0, 255} skin.controls.collapsiblecategory_text_color = {255, 255, 255, 255}
-- columnlist -- columnlist
skin.controls.columnlist_body_color = {232, 232, 232, 255} skin.controls.columnlist_body_color = {232, 232, 232, 255}
@ -134,10 +134,21 @@ skin.controls.modalbackground_body_color = {255, 255, 255, 100}
skin.controls.linenumberspanel_text_color = {170, 170, 170, 255} skin.controls.linenumberspanel_text_color = {170, 170, 170, 255}
skin.controls.linenumberspanel_body_color = {235, 235, 235, 255} skin.controls.linenumberspanel_body_color = {235, 235, 235, 255}
-- grid
skin.controls.grid_body_color = {230, 230, 230, 255}
-- form -- form
skin.controls.form_text_color = {0, 0, 0, 255} skin.controls.form_text_color = {0, 0, 0, 255}
skin.controls.form_text_font = smallfont skin.controls.form_text_font = smallfont
-- menu
skin.controls.menu_body_color = {255, 255, 255, 255}
-- menuoption
skin.controls.menuoption_body_hover_color = {51, 204, 255, 255}
skin.controls.menuoption_text_hover_color = {255, 255, 255, 255}
skin.controls.menuoption_text_color = {180, 180, 180, 255}
--[[--------------------------------------------------------- --[[---------------------------------------------------------
- func: OutlinedRectangle(x, y, width, height, ovt, ovb, ovl, ovr) - func: OutlinedRectangle(x, y, width, height, ovt, ovb, ovl, ovr)
- desc: creates and outlined rectangle - desc: creates and outlined rectangle
@ -207,8 +218,6 @@ function skin.DrawFrame(object)
-- frame top bar -- frame top bar
love.graphics.setColor(255, 255, 255, 255) love.graphics.setColor(255, 255, 255, 255)
love.graphics.draw(topbarimage, x, y, 0, topbarimage_scalex, topbarimage_scaley) love.graphics.draw(topbarimage, x, y, 0, topbarimage_scalex, topbarimage_scaley)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y + 25, width, 1)
-- frame name section -- frame name section
love.graphics.setFont(font) love.graphics.setFont(font)
@ -230,6 +239,12 @@ function skin.DrawFrame(object)
love.graphics.setColor(bordercolor) love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height) skin.OutlinedRectangle(x, y, width, height)
love.graphics.setColor(255, 255, 255, 70)
skin.OutlinedRectangle(x + 1, y + 1, width - 2, 24)
love.graphics.setColor(220, 220, 220, 255)
skin.OutlinedRectangle(x + 1, y + 25, width - 2, height - 26)
end end
--[[--------------------------------------------------------- --[[---------------------------------------------------------
@ -317,6 +332,9 @@ function skin.DrawButton(object)
skin.OutlinedRectangle(x, y, width, height) skin.OutlinedRectangle(x, y, width, height)
end end
love.graphics.setColor(255, 255, 255, 150)
skin.OutlinedRectangle(x + 1, y + 1, width - 2, height - 2)
end end
--[[--------------------------------------------------------- --[[---------------------------------------------------------
@ -504,9 +522,9 @@ function skin.DrawScrollArea(object)
love.graphics.setColor(bordercolor) love.graphics.setColor(bordercolor)
if bartype == "vertical" then if bartype == "vertical" then
skin.OutlinedRectangle(x, y, width, height, true, true) --skin.OutlinedRectangle(x, y, width, height, true, true)
elseif bartype == "horizontal" then elseif bartype == "horizontal" then
skin.OutlinedRectangle(x, y, width, height, false, false, true, true) --skin.OutlinedRectangle(x, y, width, height, false, false, true, true)
end end
end end
@ -555,18 +573,6 @@ function skin.DrawScrollBar(object)
skin.OutlinedRectangle(x, y, width, height) skin.OutlinedRectangle(x, y, width, height)
end end
if bartype == "vertical" then
love.graphics.setColor(bordercolor)
love.graphics.rectangle("fill", x + 3, y + height/2 - 3, width - 6, 1)
love.graphics.rectangle("fill", x + 3, y + height/2, width - 6, 1)
love.graphics.rectangle("fill", x + 3, y + height/2 + 3, width - 6, 1)
else
love.graphics.setColor(bordercolor)
love.graphics.rectangle("fill", x + width/2 - 3, y + 3, 1, height - 6)
love.graphics.rectangle("fill", x + width/2, y + 3, 1, height - 6)
love.graphics.rectangle("fill", x + width/2 + 3, y + 3, 1, height - 6)
end
end end
--[[--------------------------------------------------------- --[[---------------------------------------------------------
@ -602,6 +608,10 @@ function skin.DrawPanel(object)
love.graphics.setColor(bodycolor) love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", x, y, width, height) love.graphics.rectangle("fill", x, y, width, height)
love.graphics.setColor(255, 255, 255, 200)
skin.OutlinedRectangle(x + 1, y + 1, width - 2, height - 2)
love.graphics.setColor(bordercolor) love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height) skin.OutlinedRectangle(x, y, width, height)
@ -1059,6 +1069,9 @@ function skin.DrawTextInput(object)
love.graphics.print(#str > 0 and str or placeholder, textx, texty) love.graphics.print(#str > 0 and str or placeholder, textx, texty)
end end
love.graphics.setColor(230, 230, 230, 255)
skin.OutlinedRectangle(x + 1, y + 1, width - 2, height - 2)
end end
--[[--------------------------------------------------------- --[[---------------------------------------------------------
@ -1321,15 +1334,19 @@ function skin.DrawCollapsibleCategory(object)
local textcolor = skin.controls.collapsiblecategory_text_color local textcolor = skin.controls.collapsiblecategory_text_color
local font = smallfont local font = smallfont
local image = skin.images["button-nohover.png"] local image = skin.images["button-nohover.png"]
local topbarimage = skin.images["frame-topbar.png"]
local topbarimage_width = topbarimage:getWidth()
local topbarimage_height = topbarimage:getHeight()
local topbarimage_scalex = width/topbarimage_width
local topbarimage_scaley = 25/topbarimage_height
local imageheight = image:getHeight() local imageheight = image:getHeight()
local scaley = height/imageheight local scaley = height/imageheight
love.graphics.setColor(255, 255, 255, 255) love.graphics.setColor(255, 255, 255, 255)
love.graphics.draw(image, x, y, 0, width, scaley) love.graphics.draw(image, x, y, 0, width, scaley)
love.graphics.setFont(font) love.graphics.setColor(255, 255, 255, 255)
love.graphics.setColor(textcolor) love.graphics.draw(topbarimage, x, y, 0, topbarimage_scalex, topbarimage_scaley)
love.graphics.print(text, x + 5, y + 5)
love.graphics.setColor(bordercolor) love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height) skin.OutlinedRectangle(x, y, width, height)
@ -1339,12 +1356,20 @@ function skin.DrawCollapsibleCategory(object)
local icon = skin.images["collapse.png"] local icon = skin.images["collapse.png"]
icon:setFilter("nearest", "nearest") icon:setFilter("nearest", "nearest")
love.graphics.draw(icon, x + width - 21, y + 5) love.graphics.draw(icon, x + width - 21, y + 5)
love.graphics.setColor(255, 255, 255, 70)
skin.OutlinedRectangle(x + 1, y + 1, width - 2, 24)
else else
local icon = skin.images["expand.png"] local icon = skin.images["expand.png"]
icon:setFilter("nearest", "nearest") icon:setFilter("nearest", "nearest")
love.graphics.draw(icon, x + width - 21, y + 5) love.graphics.draw(icon, x + width - 21, y + 5)
love.graphics.setColor(255, 255, 255, 70)
skin.OutlinedRectangle(x + 1, y + 1, width - 2, 23)
end end
love.graphics.setFont(font)
love.graphics.setColor(textcolor)
love.graphics.print(text, x + 5, y + 5)
end end
--[[--------------------------------------------------------- --[[---------------------------------------------------------
@ -1504,23 +1529,15 @@ function skin.DrawColumnListRow(object)
if selected then if selected then
love.graphics.setColor(bodyselectedcolor) love.graphics.setColor(bodyselectedcolor)
love.graphics.rectangle("fill", x, y, width, height) love.graphics.rectangle("fill", x, y, width, height)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height, true, false, true, true)
elseif hover then elseif hover then
love.graphics.setColor(bodyhovercolor) love.graphics.setColor(bodyhovercolor)
love.graphics.rectangle("fill", x, y, width, height) love.graphics.rectangle("fill", x, y, width, height)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height, true, false, true, true)
elseif colorindex == 1 then elseif colorindex == 1 then
love.graphics.setColor(body1color) love.graphics.setColor(body1color)
love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) love.graphics.rectangle("fill", x, y, width, height)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height, true, false, true, true)
else else
love.graphics.setColor(body2color) love.graphics.setColor(body2color)
love.graphics.rectangle("fill", x, y, width, height) love.graphics.rectangle("fill", x, y, width, height)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height, true, false, true, true)
end end
for k, v in ipairs(columndata) do for k, v in ipairs(columndata) do
@ -1613,6 +1630,7 @@ function skin.DrawGrid(object)
local y = object:GetY() local y = object:GetY()
local width = object:GetWidth() local width = object:GetWidth()
local height = object:GetHeight() local height = object:GetHeight()
local bodycolor = skin.controls.grid_body_color
love.graphics.setColor(bordercolor) love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height) skin.OutlinedRectangle(x, y, width, height)
@ -1632,6 +1650,9 @@ function skin.DrawGrid(object)
if n > 1 then if n > 1 then
ovl = true ovl = true
end end
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", cx, cy, cw, ch)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(cx, cy, cw, ch, ovt, false, ovl, false) skin.OutlinedRectangle(cx, cy, cw, ch, ovt, false, ovl, false)
cx = cx + cw cx = cx + cw
end end
@ -1647,6 +1668,7 @@ end
--]]--------------------------------------------------------- --]]---------------------------------------------------------
function skin.DrawForm(object) function skin.DrawForm(object)
local skin = object:GetSkin()
local x = object:GetX() local x = object:GetX()
local y = object:GetY() local y = object:GetY()
local width = object:GetWidth() local width = object:GetWidth()
@ -1670,5 +1692,72 @@ function skin.DrawForm(object)
end end
--[[---------------------------------------------------------
- func: skin.DrawMenu(object)
- desc: draws the menu object
--]]---------------------------------------------------------
function skin.DrawMenu(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local bodycolor = skin.controls.menu_body_color
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", x, y, width, height)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
end
--[[---------------------------------------------------------
- func: skin.DrawMenuOption(object)
- desc: draws the menuoption object
--]]---------------------------------------------------------
function skin.DrawMenuOption(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local hover = object:GetHover()
local text = object:GetText()
local icon = object:GetIcon()
local option_type = object.option_type
local body_hover_color = skin.controls.menuoption_body_hover_color
local text_hover_color = skin.controls.menuoption_text_hover_color
local text_color = skin.controls.menuoption_text_color
local twidth = smallfont:getWidth(text)
if option_type == "divider" then
love.graphics.setColor(200, 200, 200, 255)
love.graphics.rectangle("fill", x + 4, y + 2, width - 8, 1)
object.contentheight = 10
else
love.graphics.setFont(smallfont)
if hover then
love.graphics.setColor(body_hover_color)
love.graphics.rectangle("fill", x + 2, y + 2, width - 4, height - 4)
love.graphics.setColor(text_hover_color)
love.graphics.print(text, x + 26, y + 5)
else
love.graphics.setColor(text_color)
love.graphics.print(text, x + 26, y + 5)
end
if icon then
love.graphics.setColor(255, 255, 255, 255)
love.graphics.draw(icon, x + 5, y + 5)
end
object.contentwidth = twidth + 31
object.contentheight = 25
end
end
-- register the skin -- register the skin
loveframes.skins.Register(skin) loveframes.skins.Register(skin)

View File

@ -28,5 +28,8 @@ skin.controls.checkbox_check_color = {255, 153, 0, 255}
skin.controls.columnlistrow_body_selected_color = {255, 153, 0, 255} skin.controls.columnlistrow_body_selected_color = {255, 153, 0, 255}
skin.controls.columnlistrow_body_hover_color = {255, 173, 51, 255} skin.controls.columnlistrow_body_hover_color = {255, 173, 51, 255}
-- menuoption
skin.controls.menuoption_body_hover_color = {255, 153, 0, 255}
-- register the skin -- register the skin
loveframes.skins.Register(skin) loveframes.skins.Register(skin)