This commit is contained in:
kepler155c@gmail.com 2016-12-27 16:01:06 -05:00
parent 5c12b20fae
commit c2500f0167
5 changed files with 29 additions and 38 deletions

View File

@ -34,7 +34,7 @@ local page = UI.Page({
up = 'history_back',
down = 'history_forward',
mouse_rightclick = 'clear_prompt',
[ 'control-space' ] = 'autocomplete',
-- [ 'control-space' ] = 'autocomplete',
},
}),
grid = UI.ScrollingGrid({
@ -73,7 +73,7 @@ function page:enable()
end
end
function autocomplete(env, oLine, x)
local function autocomplete(env, oLine, x)
local sLine = oLine:sub(1, x)
local nStartPos = sLine:find("[a-zA-Z0-9_%.]+$")

View File

@ -7,37 +7,37 @@ multishell.setTitle(multishell.getCurrent(), 'Network')
UI:configure('Network', ...)
local gridColumns = {
{ heading = 'Label', key = 'label' },
{ heading = 'Dist', key = 'distance' },
{ heading = 'Status', key = 'status' },
{ heading = 'Label', key = 'label' },
{ heading = 'Dist', key = 'distance' },
{ heading = 'Status', key = 'status' },
}
if UI.term.width >= 30 then
table.insert(gridColumns, { heading = 'Fuel', key = 'fuel' })
table.insert(gridColumns, { heading = 'Fuel', key = 'fuel' })
table.insert(gridColumns, { heading = 'Uptime', key = 'uptime' })
end
local page = UI.Page({
menuBar = UI.MenuBar({
local page = UI.Page {
menuBar = UI.MenuBar {
buttons = {
{ text = 'Telnet', event = 'telnet' },
{ text = 'VNC', event = 'vnc' },
{ text = 'Reboot', event = 'reboot' },
},
}),
grid = UI.ScrollingGrid({
},
grid = UI.ScrollingGrid {
y = 2,
values = network,
columns = gridColumns,
sortColumn = 'label',
autospace = true,
}),
notification = UI.Notification(),
},
notification = UI.Notification { },
accelerators = {
q = 'quit',
c = 'clear',
},
})
}
function sendCommand(host, command)
@ -60,7 +60,7 @@ function sendCommand(host, command)
end
function page:eventHandler(event)
local t = self.grid.selected
local t = self.grid:getSelected()
if t then
if event.type == 'telnet' or event.type == 'grid_select' then
multishell.openTab({
@ -113,14 +113,6 @@ function page.grid:getDisplayValues(row)
return row
end
function page.grid:draw()
self:adjustWidth()
UI.Grid.draw(self)
if page.notification.enabled then
page.notification:draw()
end
end
Event.addThread(function()
while true do
page.grid:update()

View File

@ -62,11 +62,6 @@ function page.grid:getDisplayValues(row)
return row
end
function page.grid:draw()
self:adjustWidth()
UI.Grid.draw(self)
end
Event.addTimer(1, true, function()
page.grid:update()
page.grid:draw()

View File

@ -121,14 +121,9 @@ end
local exitPullEvents = false
local function _pullEvents()
--exitPullEvents = false
while true do
local e = { Process:pullEvent() }
local e = { os.pullEvent() }
Event.processEvent(e)
if exitPullEvents or e[1] == 'terminate' then
break
end
end
end
@ -144,13 +139,19 @@ function Event.addThread(fn)
end
function Event.pullEvents(...)
Process:addThread(_pullEvents)
local routines = { ... }
if #routines > 0 then
for _, routine in ipairs(routines) do
Process:addThread(routine)
end
end
_pullEvents()
while true do
local e = Process:pullEvent()
if exitPullEvents or e == 'terminate' then
break
end
end
end
function Event.exitPullEvents()

View File

@ -87,8 +87,11 @@ function Process:resume(event, ...)
return true, self.filter
end
function Process:pullEvent(filter)
-- confusing...
-- pull either one event if no filter or until event matches filter
-- or until terminated (regardless of filter)
function Process:pullEvent(filter)
while true do
local e = { os.pullEventRaw() }
self:threadEvent(unpack(e))
@ -99,12 +102,12 @@ function Process:pullEvent(filter)
end
end
-- pull events until either the filter is matched or terminated
function Process:pullEvents(filter)
while true do
local e = { os.pullEventRaw(filter) }
local e = { os.pullEventRaw() }
self:threadEvent(unpack(e))
if e[1] == 'terminate' then
if (filter and e[1] == filter) or e[1] == 'terminate' then
return unpack(e)
end
end