shadow properties
@@ -1,3 +1,5 @@
|
||||
function love.conf (t)
|
||||
t.window.resizable = true
|
||||
end
|
||||
|
||||
love.filesystem.setSymlinksEnabled(true)
|
||||
|
||||
BIN
example/icon/16px/Blueprint Ruler.png
Normal file
|
After Width: | Height: | Size: 546 B |
BIN
example/icon/16px/Blueprint.png
Normal file
|
After Width: | Height: | Size: 577 B |
BIN
example/icon/16px/Book Red.png
Normal file
|
After Width: | Height: | Size: 618 B |
BIN
example/icon/16px/Book.png
Normal file
|
After Width: | Height: | Size: 631 B |
BIN
example/icon/16px/Bookmark.png
Normal file
|
After Width: | Height: | Size: 627 B |
BIN
example/icon/16px/Box.png
Normal file
|
After Width: | Height: | Size: 737 B |
BIN
example/icon/16px/CD Case.png
Normal file
|
After Width: | Height: | Size: 543 B |
BIN
example/icon/16px/Calendar Red.png
Normal file
|
After Width: | Height: | Size: 484 B |
BIN
example/icon/16px/Calendar.png
Normal file
|
After Width: | Height: | Size: 491 B |
BIN
example/icon/16px/Chalkboard.png
Normal file
|
After Width: | Height: | Size: 722 B |
BIN
example/icon/16px/Chat.png
Normal file
|
After Width: | Height: | Size: 655 B |
BIN
example/icon/16px/Clapperboard.png
Normal file
|
After Width: | Height: | Size: 466 B |
BIN
example/icon/16px/Clipboard Blank.png
Normal file
|
After Width: | Height: | Size: 640 B |
BIN
example/icon/16px/Clipboard.png
Normal file
|
After Width: | Height: | Size: 685 B |
BIN
example/icon/16px/Controller.png
Normal file
|
After Width: | Height: | Size: 443 B |
BIN
example/icon/16px/Crate.png
Normal file
|
After Width: | Height: | Size: 685 B |
BIN
example/icon/16px/Display Off.png
Normal file
|
After Width: | Height: | Size: 418 B |
BIN
example/icon/16px/Display.png
Normal file
|
After Width: | Height: | Size: 558 B |
BIN
example/icon/16px/Drawer.png
Normal file
|
After Width: | Height: | Size: 661 B |
BIN
example/icon/16px/Harddrive.png
Normal file
|
After Width: | Height: | Size: 512 B |
BIN
example/icon/16px/Inbox Empty.png
Normal file
|
After Width: | Height: | Size: 522 B |
BIN
example/icon/16px/Inbox.png
Normal file
|
After Width: | Height: | Size: 565 B |
BIN
example/icon/16px/Mail Stamp.png
Normal file
|
After Width: | Height: | Size: 580 B |
BIN
example/icon/16px/Mail.png
Normal file
|
After Width: | Height: | Size: 429 B |
BIN
example/icon/16px/Map.png
Normal file
|
After Width: | Height: | Size: 594 B |
BIN
example/icon/16px/Monitor.png
Normal file
|
After Width: | Height: | Size: 583 B |
BIN
example/icon/16px/Phone Off.png
Normal file
|
After Width: | Height: | Size: 387 B |
BIN
example/icon/16px/Phone.png
Normal file
|
After Width: | Height: | Size: 490 B |
BIN
example/icon/16px/Photo.png
Normal file
|
After Width: | Height: | Size: 567 B |
BIN
example/icon/16px/Radar.png
Normal file
|
After Width: | Height: | Size: 543 B |
BIN
example/icon/16px/Removable Device.png
Normal file
|
After Width: | Height: | Size: 454 B |
BIN
example/icon/16px/Screwdriver.png
Normal file
|
After Width: | Height: | Size: 437 B |
BIN
example/icon/16px/Signpost.png
Normal file
|
After Width: | Height: | Size: 612 B |
BIN
example/icon/16px/Slideshow.png
Normal file
|
After Width: | Height: | Size: 514 B |
BIN
example/icon/16px/Switch.png
Normal file
|
After Width: | Height: | Size: 379 B |
BIN
example/icon/16px/Terminal.png
Normal file
|
After Width: | Height: | Size: 374 B |
BIN
example/icon/16px/Wand.png
Normal file
|
After Width: | Height: | Size: 671 B |
BIN
example/icon/16px/iChat.png
Normal file
|
After Width: | Height: | Size: 648 B |
BIN
example/icon/32px/Blueprint Ruler.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
example/icon/32px/Blueprint.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
example/icon/32px/Book.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
example/icon/32px/BookRed.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
example/icon/32px/Bookmark.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
example/icon/32px/Box.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
example/icon/32px/CD Case.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
example/icon/32px/Calendar Red.png
Normal file
|
After Width: | Height: | Size: 993 B |
BIN
example/icon/32px/Calendar.png
Normal file
|
After Width: | Height: | Size: 1000 B |
BIN
example/icon/32px/Chalkboard.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
example/icon/32px/Chat.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
example/icon/32px/Clapperboard.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
example/icon/32px/Clipboard Blank.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
example/icon/32px/Clipboard.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
example/icon/32px/Controller.png
Normal file
|
After Width: | Height: | Size: 822 B |
BIN
example/icon/32px/Crate.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
example/icon/32px/Display Off.png
Normal file
|
After Width: | Height: | Size: 713 B |
BIN
example/icon/32px/Display.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
example/icon/32px/Drawer Closed.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
example/icon/32px/Drawer.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
example/icon/32px/Harddrive.png
Normal file
|
After Width: | Height: | Size: 901 B |
BIN
example/icon/32px/Inbox Empty.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
example/icon/32px/Inbox.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
example/icon/32px/Mail Stamp.png
Normal file
|
After Width: | Height: | Size: 1015 B |
BIN
example/icon/32px/Mail.png
Normal file
|
After Width: | Height: | Size: 751 B |
BIN
example/icon/32px/Map.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
example/icon/32px/Monitor.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
example/icon/32px/Phone Off.png
Normal file
|
After Width: | Height: | Size: 637 B |
BIN
example/icon/32px/Phone.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
example/icon/32px/Photo.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
example/icon/32px/Radar.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
example/icon/32px/Removable Device.png
Normal file
|
After Width: | Height: | Size: 907 B |
BIN
example/icon/32px/Screwdriver.png
Normal file
|
After Width: | Height: | Size: 806 B |
BIN
example/icon/32px/Signpost.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
example/icon/32px/Slideshow.png
Normal file
|
After Width: | Height: | Size: 897 B |
BIN
example/icon/32px/Switch.png
Normal file
|
After Width: | Height: | Size: 638 B |
BIN
example/icon/32px/Terminal.png
Normal file
|
After Width: | Height: | Size: 550 B |
BIN
example/icon/32px/Wand.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
example/icon/32px/iChat.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
5
example/icon/readme
Normal file
@@ -0,0 +1,5 @@
|
||||
Aurora by MannMitDerTarnjacke
|
||||
39 icons in .png and .ico format, 16px and 32px.
|
||||
Free for personal and commercial use!
|
||||
|
||||
http://mannmitdertarnjacke.deviantart.com/art/Aurora-287069107
|
||||
@@ -1,5 +1,3 @@
|
||||
love.filesystem.setSymlinksEnabled(true) -- for older love versions
|
||||
|
||||
local Layout = require 'luigi.layout'
|
||||
|
||||
local style = {
|
||||
@@ -34,18 +32,18 @@ local style = {
|
||||
height = 120,
|
||||
padding = 8,
|
||||
background = { 255, 255, 255 },
|
||||
icon = 'icon/emblem-system.png',
|
||||
icon = 'icon/32px/Box.png',
|
||||
},
|
||||
}
|
||||
|
||||
local mainForm = { title = "Test window", id = 'mainWindow', type = 'panel',
|
||||
{ type = 'panel', id = 'toolbar', flow = 'x',
|
||||
{ type = 'button', id = 'newButton', style = 'toolButton', key = 'z',
|
||||
icon = 'icon/emblem-default.png' },
|
||||
icon = 'icon/32px/Blueprint.png' },
|
||||
{ type = 'button', id = 'loadButton', style = 'toolButton',
|
||||
icon = 'icon/emblem-documents.png' },
|
||||
icon = 'icon/32px/Calendar.png' },
|
||||
{ type = 'button', id = 'saveButton', style = 'toolButton',
|
||||
icon = 'icon/emblem-downloads.png' },
|
||||
icon = 'icon/32px/Harddrive.png' },
|
||||
},
|
||||
{ flow = 'x',
|
||||
{ id = 'leftSideBox', width = 200,
|
||||
@@ -76,7 +74,8 @@ local mainForm = { title = "Test window", id = 'mainWindow', type = 'panel',
|
||||
{ type = 'sash', height = 4, },
|
||||
{ type = 'panel', flow = 'x', height = 48, padding = 2,
|
||||
{ type = 'text', id = 'aTextField', text = 'a text field' },
|
||||
{ type = 'button', key='return', width = 80, id = 'aButton', text = 'Styling!' },
|
||||
{ type = 'button', key='return', width = 80, id = 'aButton', text = 'Styling!',
|
||||
font = 'font/liberation/LiberationMono-Regular.ttf' },
|
||||
},
|
||||
{ type = 'panel', id = 'statusbar', height = 24, padding = 4, textColor = { 255, 0, 0 } },
|
||||
}
|
||||
@@ -94,26 +93,8 @@ layout.leftSideBox:addChild {
|
||||
|
||||
layout.slidey:onChange(function (event)
|
||||
layout.progressBar:setValue(event.value)
|
||||
layout.progressBar:reshape()
|
||||
end)
|
||||
|
||||
--[[
|
||||
local KEY_ESCAPE = 27
|
||||
|
||||
layout:onKeyboard(function(event)
|
||||
if event.key == KEY_ESCAPE then
|
||||
layout.window:destroy()
|
||||
os.exit(0)
|
||||
end
|
||||
if key == GLUT_KEY_F11 then
|
||||
glutFullScreen()
|
||||
end
|
||||
if key == GLUT_KEY_F12 then
|
||||
glutPositionWindow(-1, -1)
|
||||
end
|
||||
end)
|
||||
]]
|
||||
|
||||
layout:onMove(function (event)
|
||||
local w = event.target
|
||||
layout.statusbar.text = (w.id or '(unnamed)') .. ' ' ..
|
||||
@@ -130,7 +111,11 @@ layout.newButton:onPress(function (event)
|
||||
print('creating a new thing!')
|
||||
end)
|
||||
|
||||
layout.mainCanvas.font = 'font/liberation/LiberationMono-Regular.ttf'
|
||||
layout.aButton:onPress(function (event)
|
||||
layout.aButton.font = nil
|
||||
end)
|
||||
|
||||
layout.mainCanvas.font = 'font/liberation/LiberationMono-Regular.ttf'
|
||||
|
||||
layout.mainCanvas.text = [[Abedede sdfsdf asfdsdfdsfs sdfsdfsdf
|
||||
sfsdfdfbv db er erg rth tryj ty j fgh dfgv
|
||||
|
||||
@@ -11,15 +11,15 @@ local Layout = Base:extend()
|
||||
|
||||
function Layout:constructor (data)
|
||||
self.accelerators = {}
|
||||
self:addDefaultHandlers()
|
||||
self:setStyle()
|
||||
self:setTheme(require(ROOT .. 'theme.light'))
|
||||
|
||||
self.isMousePressed = false
|
||||
self.isManagingInput = false
|
||||
self.hooks = {}
|
||||
self.root = Widget(self, data)
|
||||
|
||||
self:addDefaultHandlers()
|
||||
self.root = data or {}
|
||||
Widget(self, self.root)
|
||||
end
|
||||
|
||||
-- focus a widget if it's focusable, and return success
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
local ROOT = (...):gsub('[^.]*$', '')
|
||||
|
||||
local Event = require(ROOT .. 'event')
|
||||
local Font = require(ROOT .. 'font')
|
||||
|
||||
local Widget = {}
|
||||
|
||||
@@ -23,30 +24,49 @@ end
|
||||
|
||||
local function new (Widget, layout, self)
|
||||
self = self or {}
|
||||
self.type = self.type or 'generic'
|
||||
self.layout = layout
|
||||
self.children = {}
|
||||
self.position = { x = nil, y = nil }
|
||||
self.dimensions = { width = nil, height = nil }
|
||||
self.shadowProperties = {}
|
||||
|
||||
for _, property in ipairs { 'font', 'fontSize', 'textColor' } do
|
||||
self.shadowProperties[property] = self[property]
|
||||
self[property] = nil
|
||||
end
|
||||
|
||||
local meta = setmetatable(self, {
|
||||
__index = function (self, property)
|
||||
local value = self.shadowProperties[property]
|
||||
if value ~= nil then return value end
|
||||
|
||||
local value = Widget[property]
|
||||
if value ~= nil then return value end
|
||||
|
||||
local style = self.layout.style
|
||||
value = style and style:getProperty(self, property)
|
||||
if value ~= nil and value ~= 'defer' then return value end
|
||||
|
||||
local theme = self.layout.theme
|
||||
return theme and theme:getProperty(self, property)
|
||||
end,
|
||||
__newindex = function (self, property, value)
|
||||
if property == 'font'
|
||||
or property == 'fontSize'
|
||||
or property == 'textColor' then
|
||||
rawset(self.shadowProperties, property, value)
|
||||
self.fontData = Font(self.font, self.fontSize, self.textColor)
|
||||
return
|
||||
end
|
||||
|
||||
rawset(self, property, value)
|
||||
end
|
||||
})
|
||||
|
||||
layout:addWidget(self)
|
||||
self.type = self.type or 'generic'
|
||||
self.fontData = Font(self.font, self.fontSize, self.textColor)
|
||||
|
||||
for k, v in ipairs(self) do
|
||||
self.children[k] = v.isWidget and v or new(Widget, self.layout, v)
|
||||
self.children[k].parent = self
|
||||
end
|
||||
layout:addWidget(self)
|
||||
|
||||
local decorate = Widget.typeDecorators[self.type]
|
||||
|
||||
@@ -54,6 +74,11 @@ local function new (Widget, layout, self)
|
||||
decorate(self)
|
||||
end
|
||||
|
||||
for k, v in ipairs(self) do
|
||||
self.children[k] = v.isWidget and v or new(Widget, self.layout, v)
|
||||
self.children[k].parent = self
|
||||
end
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
@@ -116,7 +141,8 @@ function Widget:calculateDimension (name)
|
||||
local min = (name == 'width') and (self.minimumWidth or 0)
|
||||
or (self.minimumHeight or 0)
|
||||
|
||||
local max = self.layout.root[name]
|
||||
local max = name == 'width' and love.graphics.getWidth()
|
||||
or love.graphics.getHeight()
|
||||
|
||||
if self[name] then
|
||||
self.dimensions[name] = clamp(self[name], min, max)
|
||||
|
||||