mirror of
https://github.com/linux-man/LoveFrames.git
synced 2024-11-18 16:04:22 +00:00
Add menu object
This commit is contained in:
parent
d38ab2c621
commit
c633156334
@ -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
|
||||||
|
18
init.lua
18
init.lua
@ -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
|
||||||
|
|
||||||
--[[---------------------------------------------------------
|
--[[---------------------------------------------------------
|
||||||
|
233
objects/internal/menuoption.lua
Normal file
233
objects/internal/menuoption.lua
Normal 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
292
objects/menu.lua
Normal 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
|
@ -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)
|
@ -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)
|
Loading…
Reference in New Issue
Block a user