mirror of
https://github.com/kepler155c/opus
synced 2025-10-26 13:17:39 +00:00
Ui enhancements 2.0 (#31)
* canvas overhaul * minor tweaks * list mode for overview * bugfixes + tweaks for editor 2.0 * minor tweaks * more editor work * refactor + new transitions * use layout() where appropriate and cleanup * mouse triple click + textEntry scroll ind * cleanup * cleanup + theme editor * color rework + cleanup * changes for deprecated ui methods * can now use named colors
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
_G.requireInjector(_ENV)
|
||||
|
||||
local Peripheral = require('opus.peripheral')
|
||||
|
||||
_G.device = Peripheral.getList()
|
||||
|
||||
@@ -4,11 +4,8 @@ if fs.native then
|
||||
return
|
||||
end
|
||||
|
||||
_G.requireInjector(_ENV)
|
||||
local Util = require('opus.util')
|
||||
|
||||
-- TODO: support getDrive for virtual nodes
|
||||
|
||||
fs.native = Util.shallowCopy(fs)
|
||||
|
||||
local fstypes = { }
|
||||
@@ -23,7 +20,6 @@ for k,fn in pairs(fs) do
|
||||
end
|
||||
|
||||
function nativefs.list(node, dir)
|
||||
|
||||
local files
|
||||
if fs.native.isDir(dir) then
|
||||
files = fs.native.list(dir)
|
||||
@@ -265,7 +261,6 @@ local function getfstype(fstype)
|
||||
end
|
||||
|
||||
function fs.mount(path, fstype, ...)
|
||||
|
||||
local vfs = getfstype(fstype)
|
||||
if not vfs then
|
||||
error('Invalid file system type')
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
_G.requireInjector(_ENV)
|
||||
|
||||
local Config = require('opus.config')
|
||||
|
||||
local device = _G.device
|
||||
|
||||
@@ -32,3 +32,23 @@ end
|
||||
|
||||
help.setPath(table.concat(helpPaths, ':'))
|
||||
shell.setPath(table.concat(appPaths, ':'))
|
||||
|
||||
local function runDir(directory)
|
||||
local files = fs.list(directory)
|
||||
table.sort(files)
|
||||
|
||||
for _,file in ipairs(files) do
|
||||
os.sleep(0)
|
||||
local result, err = shell.run(directory .. '/' .. file)
|
||||
if not result and err then
|
||||
_G.printError('\n' .. err)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for _, package in pairs(Packages:installedSorted()) do
|
||||
local packageDir = 'packages/' .. package.name .. '/init'
|
||||
if fs.exists(packageDir) and fs.isDir(packageDir) then
|
||||
runDir(packageDir)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
_G.requireInjector(_ENV)
|
||||
|
||||
local Blit = require('opus.ui.blit')
|
||||
local Config = require('opus.config')
|
||||
local trace = require('opus.trace')
|
||||
local Util = require('opus.util')
|
||||
@@ -47,6 +46,7 @@ local config = {
|
||||
Config.load('multishell', config)
|
||||
|
||||
local _colors = parentTerm.isColor() and config.color or config.standard
|
||||
local palette = parentTerm.isColor() and Blit.colorPalette or Blit.grayscalePalette
|
||||
|
||||
local function redrawMenu()
|
||||
if not tabsDirty then
|
||||
@@ -207,17 +207,11 @@ end)
|
||||
kernel.hook('multishell_redraw', function()
|
||||
tabsDirty = false
|
||||
|
||||
local function write(x, text, bg, fg)
|
||||
parentTerm.setBackgroundColor(bg)
|
||||
parentTerm.setTextColor(fg)
|
||||
parentTerm.setCursorPos(x, 1)
|
||||
parentTerm.write(text)
|
||||
end
|
||||
|
||||
local bg = _colors.tabBarBackgroundColor
|
||||
parentTerm.setBackgroundColor(bg)
|
||||
parentTerm.setCursorPos(1, 1)
|
||||
parentTerm.clearLine()
|
||||
local blit = Blit(w, {
|
||||
bg = _colors.tabBarBackgroundColor,
|
||||
fg = _colors.textColor,
|
||||
palette = palette,
|
||||
})
|
||||
|
||||
local currentTab = kernel.getFocused()
|
||||
|
||||
@@ -254,21 +248,26 @@ kernel.hook('multishell_redraw', function()
|
||||
tabX = tabX + tab.width
|
||||
if tab ~= currentTab then
|
||||
local textColor = tab.isDead and _colors.errorColor or _colors.textColor
|
||||
write(tab.sx, tab.title:sub(1, tab.width - 1),
|
||||
blit:write(tab.sx, tab.title:sub(1, tab.width - 1),
|
||||
_colors.backgroundColor, textColor)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if currentTab then
|
||||
write(currentTab.sx - 1,
|
||||
' ' .. currentTab.title:sub(1, currentTab.width - 1) .. ' ',
|
||||
_colors.focusBackgroundColor, _colors.focusTextColor)
|
||||
if currentTab.sx then
|
||||
blit:write(currentTab.sx - 1,
|
||||
' ' .. currentTab.title:sub(1, currentTab.width - 1) .. ' ',
|
||||
_colors.focusBackgroundColor, _colors.focusTextColor)
|
||||
end
|
||||
if not currentTab.noTerminate then
|
||||
write(w, closeInd, _colors.backgroundColor, _colors.focusTextColor)
|
||||
blit:write(w, closeInd, nil, _colors.focusTextColor)
|
||||
end
|
||||
end
|
||||
|
||||
parentTerm.setCursorPos(1, 1)
|
||||
parentTerm.blit(blit.text, blit.fg, blit.bg)
|
||||
|
||||
if currentTab and currentTab.window then
|
||||
currentTab.window.restoreCursor()
|
||||
end
|
||||
@@ -334,16 +333,12 @@ kernel.hook('mouse_scroll', function(_, eventData)
|
||||
end)
|
||||
|
||||
kernel.hook('kernel_ready', function()
|
||||
local env = Util.shallowCopy(shell.getEnv())
|
||||
_G.requireInjector(env)
|
||||
|
||||
overviewId = multishell.openTab({
|
||||
path = config.launcher or 'sys/apps/Overview.lua',
|
||||
isOverview = true,
|
||||
noTerminate = true,
|
||||
focused = true,
|
||||
title = '+',
|
||||
env = env,
|
||||
})
|
||||
|
||||
multishell.openTab({
|
||||
|
||||
Reference in New Issue
Block a user