diff --git a/apps/Lua.lua b/apps/Lua.lua index 112a9ea..fa5ca6d 100644 --- a/apps/Lua.lua +++ b/apps/Lua.lua @@ -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_%.]+$") diff --git a/apps/Network.lua b/apps/Network.lua index ab337e9..7a77fa7 100644 --- a/apps/Network.lua +++ b/apps/Network.lua @@ -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() diff --git a/apps/Tabs.lua b/apps/Tabs.lua index 070ae34..7b31d9e 100644 --- a/apps/Tabs.lua +++ b/apps/Tabs.lua @@ -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() diff --git a/sys/apis/event.lua b/sys/apis/event.lua index e110286..1d10479 100644 --- a/sys/apis/event.lua +++ b/sys/apis/event.lua @@ -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() diff --git a/sys/apis/process.lua b/sys/apis/process.lua index 2e69869..b851585 100644 --- a/sys/apis/process.lua +++ b/sys/apis/process.lua @@ -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