Browse Source

added scrolling support to the repoinstaller menu

master
XeonSquared 4 months ago
parent
commit
f9af8fb9ef
1 changed files with 20 additions and 7 deletions
  1. +20
    -7
      repo-installer/repoinstaller.lua

+ 20
- 7
repo-installer/repoinstaller.lua View File

@@ -1,7 +1,7 @@
local serial = require "serialization"
local event = require "event"
local fs = require "filesystem"
local unicode = require "unicode"
local fs = require "filesystem"
local event = require "event"

local tArgs = {...}
local ipackages = {} -- installed packages
@@ -49,6 +49,10 @@ end

function info(pkg) -- shows info for pkg
clear()
local fh = io.popen("less","w")
local function print(str)
fh:write(str.."\n")
end
print(string.format("%s - %s",pkg,packages[pkg].name))
print(packages[pkg].description)
if packages[pkg].files then
@@ -63,6 +67,7 @@ function info(pkg) -- shows info for pkg
print(" - "..k)
end
end
fh:close()
end

local preamble = false
@@ -82,14 +87,25 @@ if preamble then -- display pre-inst screen
event.pull("key_down")
end

local selected = 1
local mx, my = require("term").getViewport()
local selected, start = 1, 1

local function drawmenu() -- draw the menu display - nothing but text and VT100 escape codes
local infostring = string.format("[%s][%s]%s", unicode.char(0x2191), unicode.char(0x2193), " Move [Space] (De)select [i] More Info [q] Quit [Enter] Confirm")
clear()
io.write(string.format("\27[%d;1H%s\27[H",my,infostring))
local workingSpace = my - math.ceil(infostring:len() / mx) - 1
if install.label then
print(install.label .. " installer")
workingSpace = workingSpace - 1
end
if selected > start + workingSpace - 3 then
start = math.min(start + 3, #pkgmap - workingSpace)
elseif selected < start + 3 then
start = math.max(start - 3, 1)
end
for k,v in pairs(pkgmap) do
for k = start, math.min(#pkgmap,start+workingSpace) do
local v = pkgmap[k]
if k == selected then
io.write("\27[30;47m")
end
@@ -101,7 +117,6 @@ local function drawmenu() -- draw the menu display - nothing but text and VT100
io.write(v)
print("\27[0m")
end
print("Use the arrow keys to navigate. (De)select options with space. View more info by pressing i, and quit by pressing q. Confirm with enter.")
end

--[[
@@ -126,8 +141,6 @@ while run do -- menu loop
install = false
elseif ch == 105 and co == 23 then
info(pkgmap[selected])
print("\nPress any key to return to the menu.")
event.pull("key_down")
elseif ch == 0 and co == 208 then
selected = selected + 1
if selected > #pkgmap then


Loading…
Cancel
Save