remove preferred apps/alternates - same can be accomplished using aliases

This commit is contained in:
kepler155c@gmail.com 2020-06-15 19:54:42 -06:00
parent 156b604a58
commit 42bd4b2b69
8 changed files with 64 additions and 151 deletions

View File

@ -1,4 +1,3 @@
local Alt = require('opus.alternate')
local Config = require('opus.config')
local Event = require('opus.event')
local pastebin = require('opus.http.pastebin')
@ -351,7 +350,7 @@ function Browser:eventHandler(event)
self:setStatus('Started cloud edit')
elseif event.type == 'shell' then
self:run(Alt.get('shell'))
self:run('shell')
elseif event.type == 'refresh' then
self:updateDirectory(self.dir)

View File

@ -1,4 +1,3 @@
local Alt = require('opus.alternate')
local Array = require('opus.array')
local class = require('opus.class')
local Config = require('opus.config')
@ -469,13 +468,13 @@ function page:eventHandler(event)
shell.switchTab(shell.openTab(event.button.app.run))
elseif event.type == 'shell' then
shell.switchTab(shell.openTab(Alt.get('shell')))
shell.switchTab(shell.openTab('shell'))
elseif event.type == 'lua' then
shell.switchTab(shell.openTab(Alt.get('lua')))
shell.switchTab(shell.openTab('Lua'))
elseif event.type == 'files' then
shell.switchTab(shell.openTab(Alt.get('files')))
shell.switchTab(shell.openTab('Files'))
elseif event.type == 'network' then
shell.switchTab(shell.openTab('Network'))

View File

@ -1,5 +1,3 @@
local Alt = require('opus.alternate')
local kernel = _G.kernel
local os = _G.os
local shell = _ENV.shell
@ -20,7 +18,7 @@ kernel.hook('kernel_focus', function(_, eventData)
end
end
if nextTab == launcherTab then
shell.switchTab(shell.openTab(Alt.get('shell')))
shell.switchTab(shell.openTab('shell'))
else
shell.switchTab(nextTab.uid)
end

View File

@ -1,9 +1,9 @@
local Alt = require('opus.alternate')
local Event = require('opus.event')
local Socket = require('opus.socket')
local Util = require('opus.util')
local kernel = _G.kernel
local shell = _ENV.shell
local term = _G.term
local window = _G.window
@ -46,7 +46,7 @@ local function telnetHost(socket, mode)
title = mode .. ' client',
hidden = true,
fn = function()
Util.run(kernel.makeEnv(_ENV), Alt.get('shell'), table.unpack(termInfo.program))
Util.run(kernel.makeEnv(_ENV), shell.resolveProgram('shell'), table.unpack(termInfo.program))
if socket.queue then
socket:write(socket.queue)
end

View File

@ -131,7 +131,14 @@ function shell.exit()
end
function shell.dir() return DIR end
function shell.setDir(d) DIR = d end
function shell.setDir(d)
d = fs.combine(d, '')
if not fs.isDir(d) then
error("Not a directory", 2)
end
DIR = d
end
function shell.path() return PATH end
function shell.setPath(p) PATH = p end
@ -155,24 +162,29 @@ function shell.resolveProgram(_sCommand)
local function inPath()
-- Otherwise, look on the path variable
if not _sCommand:find('/') then
for sPath in string.gmatch(PATH or '', "[^:]+") do
sPath = fs.combine(sPath, _sCommand )
if fs.exists(sPath) and not fs.isDir(sPath) then
return sPath
end
if fs.exists(sPath .. '.lua') then
return sPath .. '.lua'
end
for sPath in string.gmatch(PATH or '', "[^:]+") do
sPath = fs.combine(sPath, _sCommand )
if check(sPath) then
return sPath
end
if check(sPath .. '.lua') then
return sPath .. '.lua'
end
end
end
return check(_sCommand)
or check(_sCommand .. '.lua')
or check(shell.resolve(_sCommand))
if not _sCommand:find('/') then
return inPath()
end
-- so... even if you are in the rom directory and you run:
-- 'packages/common/edit.lua', allow this even though it
-- does not use a leading slash. Ideally, fs.combine would
-- provide the leading slash... but it does not.
return check(shell.resolve(_sCommand))
or check(shell.resolve(_sCommand) .. '.lua')
or inPath()
or check(_sCommand)
or check(_sCommand .. '.lua')
end
function shell.programs(_bIncludeHidden)

View File

@ -1,77 +0,0 @@
local Array = require('opus.array')
local Config = require('opus.config')
local UI = require('opus.ui')
local tab = UI.Tab {
title = 'Preferred',
description = 'Select preferred applications',
apps = UI.ScrollingGrid {
x = 2, y = 2,
ex = 12, ey = -3,
columns = {
{ key = 'name' },
},
sortColumn = 'name',
disableHeader = true,
},
choices = UI.Grid {
x = 14, y = 2,
ex = -2, ey = -3,
disableHeader = true,
columns = {
{ key = 'file' },
},
getRowTextColor = function(self, row)
if row == self.values[1] then
return 'yellow'
end
return UI.Grid.getRowTextColor(self, row)
end,
},
statusBar = UI.StatusBar {
values = 'Double-click to set as preferred'
},
}
function tab:updateChoices()
local app = self.apps:getSelected().name
local choices = { }
for _, v in pairs(self.config[app]) do
table.insert(choices, { file = v })
end
self.choices:setValues(choices)
self.choices:draw()
end
function tab:enable()
self.config = Config.load('alternate')
local apps = { }
for k, _ in pairs(self.config) do
table.insert(apps, { name = k })
end
self.apps:setValues(apps)
self:updateChoices()
UI.Tab.enable(self)
end
function tab:eventHandler(event)
if event.type == 'grid_focus_row' and event.element == self.apps then
self:updateChoices()
elseif event.type == 'grid_select' and event.element == self.choices then
local app = self.apps:getSelected().name
Array.removeByValue(self.config[app], event.selected.file)
table.insert(self.config[app], 1, event.selected.file)
self:updateChoices()
Config.update('alternate', self.config)
else
return UI.Tab.eventHandler(self, event)
end
return true
end
return tab

View File

@ -1,48 +0,0 @@
local Array = require('opus.array')
local Config = require('opus.config')
local Util = require('opus.util')
local function getConfig()
return Config.load('alternate', {
shell = {
'sys/apps/shell.lua',
'rom/programs/shell.lua',
},
lua = {
'sys/apps/Lua.lua',
'rom/programs/lua.lua',
},
files = {
'sys/apps/Files.lua',
}
})
end
local Alt = { }
function Alt.get(key)
return getConfig()[key][1]
end
function Alt.set(key, value)
local config = getConfig()
Array.removeByValue(config[key], value)
table.insert(config[key], 1, value)
Config.update('alternate', config)
end
function Alt.remove(key, value)
local config = getConfig()
Array.removeByValue(config[key], value)
Config.update('alternate', config)
end
function Alt.add(key, value)
local config = getConfig()
if not Util.contains(config[key], value) then
table.insert(config[key], value)
Config.update('alternate', config)
end
end
return Alt

View File

@ -79,10 +79,40 @@ function ramfs.list(node, dir)
end
function ramfs.open(node, fn, fl)
if fl ~= 'r' and fl ~= 'w' and fl ~= 'rb' and fl ~= 'wb' then
local modes = Util.transpose { 'r', 'w', 'rb', 'wb', 'a' }
if not modes[fl] then
error('Unsupported mode')
end
if fl == 'a' then
if node.mountPoint ~= fn then
fl = 'w'
else
local c = type(node.contents) == 'table'
and string.char(table.unpack(node.contents))
or node.contents
or ''
return {
write = function(str)
c = c .. str
end,
writeLine = function(str)
c = c .. str .. '\n'
end,
flush = function()
node.contents = c
node.size = #c
end,
close = function()
node.contents = c
node.size = #c
c = nil
end,
}
end
end
if fl == 'r' then
if node.mountPoint ~= fn then
return