mirror of
https://github.com/IgorTimofeev/MineOS.git
synced 2025-12-20 02:59:20 +01:00
110 lines
4.2 KiB
Lua
110 lines
4.2 KiB
Lua
|
|
local GUI = require("GUI")
|
|
local paths = require("Paths")
|
|
local system = require("System")
|
|
local network = require("Network")
|
|
local filesystem = require("Filesystem")
|
|
|
|
local module = {}
|
|
|
|
local workspace, window, localization = table.unpack({...})
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
module.name = localization.network
|
|
module.margin = 0
|
|
module.onTouch = function()
|
|
local emptyObject = window.contentLayout:addChild(GUI.object(1, 1, 0, 0))
|
|
local insertModemText = window.contentLayout:addChild(GUI.text(1, 1, 0x2D2D2D, localization.networkNoModem))
|
|
local ebloText = window.contentLayout:addChild(GUI.text(1, 1, 0x2D2D2D, localization.networkThis))
|
|
local networkNameInput = window.contentLayout:addChild(GUI.input(1, 1, 36, 3, 0xE1E1E1, 0x696969, 0xA5A5A5, 0xE1E1E1, 0x2D2D2D, system.properties.networkName or "", localization.networkName))
|
|
local stateSwitchAndLabel = window.contentLayout:addChild(GUI.switchAndLabel(1, 1, 36, 8, 0x66DB80, 0xE1E1E1, 0xFFFFFF, 0xA5A5A5, localization.networkEnabled .. ":", system.properties.networkEnabled))
|
|
local remoteComputersText = window.contentLayout:addChild(GUI.text(1, 1, 0x2D2D2D, localization.networkRemote))
|
|
local remoteComputersComboBox = window.contentLayout:addChild(GUI.comboBox(1, 1, 36, 3, 0xE1E1E1, 0x696969, 0xD2D2D2, 0xA5A5A5))
|
|
local allowReadAndWriteSwitchAndLabel = window.contentLayout:addChild(GUI.switchAndLabel(1, 1, 36, 8, 0x66DB80, 0xE1E1E1, 0xFFFFFF, 0xA5A5A5, localization.networkFileAccess .. ":", false))
|
|
|
|
local signalStrengthSlider = window.contentLayout:addChild(GUI.slider(1, 1, 36, 0x66DB80, 0xE1E1E1, 0xFFFFFF, 0xA5A5A5, 0, 512, system.properties.networkSignalStrength, false, localization.networkRadius ..": ", ""))
|
|
signalStrengthSlider.roundValues = true
|
|
|
|
local function check()
|
|
insertModemText.hidden = network.modemProxy
|
|
|
|
for i = 3, #window.contentLayout.children do
|
|
window.contentLayout.children[i].hidden = not network.modemProxy
|
|
end
|
|
|
|
if network.modemProxy then
|
|
for i = 6, #window.contentLayout.children do
|
|
window.contentLayout.children[i].hidden = not stateSwitchAndLabel.switch.state
|
|
end
|
|
|
|
if stateSwitchAndLabel.switch.state then
|
|
signalStrengthSlider.hidden = not network.modemProxy.isWireless()
|
|
|
|
remoteComputersComboBox:clear()
|
|
for proxy, path in filesystem.mounts() do
|
|
if proxy.networkModem then
|
|
local item = remoteComputersComboBox:addItem(network.getModemProxyName(proxy))
|
|
item.proxyAddress = proxy.address
|
|
item.onTouch = function()
|
|
allowReadAndWriteSwitchAndLabel.switch:setState(system.properties.networkUsers[item.proxyAddress].allowReadAndWrite)
|
|
end
|
|
end
|
|
end
|
|
|
|
remoteComputersText.hidden = remoteComputersComboBox:count() < 1
|
|
remoteComputersComboBox.hidden = remoteComputersText.hidden
|
|
allowReadAndWriteSwitchAndLabel.hidden = remoteComputersText.hidden
|
|
|
|
if not remoteComputersText.hidden then
|
|
remoteComputersComboBox:getItem(remoteComputersComboBox.selectedItem).onTouch()
|
|
end
|
|
end
|
|
end
|
|
|
|
workspace:draw()
|
|
end
|
|
|
|
networkNameInput.onInputFinished = function()
|
|
system.properties.networkName = #networkNameInput.text > 0 and networkNameInput.text or nil
|
|
system.saveProperties()
|
|
network.broadcastComputerState(system.properties.networkEnabled)
|
|
end
|
|
|
|
signalStrengthSlider.onValueChanged = function()
|
|
system.properties.networkSignalStrength = math.floor(signalStrengthSlider.value)
|
|
system.saveProperties()
|
|
end
|
|
|
|
stateSwitchAndLabel.switch.onStateChanged = function()
|
|
if stateSwitchAndLabel.switch.state then
|
|
network.enable()
|
|
else
|
|
network.disable()
|
|
end
|
|
|
|
check()
|
|
end
|
|
|
|
allowReadAndWriteSwitchAndLabel.switch.onStateChanged = function()
|
|
system.properties.networkUsers[remoteComputersComboBox:getItem(remoteComputersComboBox.selectedItem).proxyAddress].allowReadAndWrite = allowReadAndWriteSwitchAndLabel.switch.state
|
|
system.saveProperties()
|
|
end
|
|
|
|
-- Empty object-listener
|
|
emptyObject.eventHandler = function(workspace, object, e1, e2, e3, ...)
|
|
if (e1 == "component_added" or e1 == "component_removed") and e3 == "modem" then
|
|
check()
|
|
elseif e1 == "network" and e2 == "updateProxyList" then
|
|
check()
|
|
end
|
|
end
|
|
|
|
check()
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
return module
|
|
|