add progress bar

This commit is contained in:
airstruck
2015-10-28 11:15:23 -04:00
parent 4372740363
commit 0759d36702
10 changed files with 44 additions and 5 deletions

View File

@@ -69,6 +69,8 @@ local mainForm = { title = "Test window", id = 'mainWindow', type = 'panel',
{ value = 2, text = 'Thing Two' },
{ value = 3, text = 'Thing Three' },
} },
{ type = 'panel', text = 'A progress bar', align = 'bottom', height = 24, padding = 4 },
{ type = 'progress', height = 32, margin = 4, id = 'progressBar', },
},
},
{ type = 'sash', height = 4, },
@@ -91,9 +93,9 @@ layout.leftSideBox:addChild {
align = 'middle right'
}
layout.slidey:onMotion(function (event)
layout.statusbar.text = event.x
return false
layout.slidey:onPressDrag(function (event)
layout.progressBar.value = layout.slidey.value
layout.progressBar:reflow()
end)
--[[

View File

@@ -42,10 +42,18 @@ return function (config)
slices = RESOURCE .. 'button_pressed.png',
padding = 0,
},
progress = {
slices = RESOURCE .. 'button_pressed.png',
padding = 0,
},
progressInner = {
slices = RESOURCE .. 'progress.png',
padding = 0,
minimumWidth = 12,
},
slider_hovered = {
},
stepper = {
type = 'panel',
},
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 507 B

After

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

View File

@@ -8,6 +8,7 @@ local Widget = Base:extend()
Widget.isWidget = true
Widget.typeDecorators = {
progress = require(ROOT .. 'widget.progress'),
sash = require(ROOT .. 'widget.sash'),
slider = require(ROOT .. 'widget.slider'),
stepper = require(ROOT .. 'widget.stepper'),

15
luigi/widget/progress.lua Normal file
View File

@@ -0,0 +1,15 @@
return function (self)
self.value = 0.5
self.flow = 'x' -- TODO: support vertical slider
local bar = self:addChild {
type = 'progressInner',
width = 0,
}
self:onReshape(function (event)
local x1, y1, x2, y2 = self:getRectangle(true, true)
bar.width = self.value * (x2 - x1)
end)
end

View File

@@ -19,12 +19,24 @@ return function (self)
thumb:onPressStart(unpress)
thumb:onPressEnter(unpress)
self:onPressDrag(function (event)
local function press (event)
local x1, y1, x2, y2 = self:getRectangle(true, true)
self.value = (event.x - x1) / (x2 - x1)
if self.value < 0 then self.value = 0 end
if self.value > 1 then self.value = 1 end
self:reflow()
end
self:onPressStart(press)
self:onPressDrag(press)
self:onEnter(function (event)
thumb.hovered = true
end)
self:onLeave(function (event)
thumb.hovered = false
end)
self:onReshape(function (event)

View File

@@ -11,6 +11,7 @@ return function (self)
}
local view = self:addChild {
type = 'text',
align = 'middle center',
margin = 0,
}