From bb0f9b5ca2a3794722fcb28dfaece72c7ae26d90 Mon Sep 17 00:00:00 2001 From: Someone Date: Sat, 18 Oct 2025 05:33:16 +0200 Subject: [PATCH] RELEASE 2.0.4 - GUI reworked. Now shows currently configured key bindings --- License.txt | 2 +- changelog.txt | 7 +++++ control.lua | 69 ++++++++++++++++++++++++++++++------------------ data.lua | 10 +++---- info.json | 4 +-- locale/en/en.cfg | 12 ++++----- 6 files changed, 64 insertions(+), 40 deletions(-) diff --git a/License.txt b/License.txt index 471d56f..705e1d8 100644 --- a/License.txt +++ b/License.txt @@ -1,4 +1,4 @@ -Copyright (c) 2018-2024 Someone +Copyright (c) 2018-2025 Someone Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/changelog.txt b/changelog.txt index c609fc1..55f530d 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,10 @@ +--------------------------------------------------------------------------------------------------- +Version: 2.0.4 +Date: 2025-10-18 + + Changed: + - GUI reworked. Now shows currently configured key bindings. + --------------------------------------------------------------------------------------------------- Version: 2.0.3 Date: 2024-11-30 diff --git a/control.lua b/control.lua index de61d5a..4527a66 100644 --- a/control.lua +++ b/control.lua @@ -15,18 +15,15 @@ function exec_command(player) f, lserr = loadstring('local ipcs,ipcr ipcs,ipcr=pcall(function() '..cmd..' end) if not ipcs then game.players['..player.index..'].print(ipcr) end') if not f then --- player.print("loadstring1 failed (this may be ok)") f, lserr = loadstring('game.players['..player.index..'].print('..cmd..')') end if f then pcs, pcerr = pcall(f) if not pcs then --- player.print("pcall failed") player.print(pcerr:sub(1, pcerr:find('\n'))) end else --- player.print("syntax error2") player.print(lserr:sub(1, lserr:find('\n'))) end end @@ -37,35 +34,55 @@ function toggleGui (player) storage.cmd = player.gui.screen.some_luaconsole.input.text player.gui.screen.some_luaconsole.destroy() else - frame = player.gui.screen.add{type = 'frame', - name = 'some_luaconsole', - direction = 'vertical', - caption = {'some_luaconsole.title'} - } + frame = player.gui.screen.add{type = 'frame', name = 'some_luaconsole', direction = 'vertical'} - frame.add{type = 'label', caption = {'some_luaconsole.inputlabel'}} - input = frame.add{type = 'text-box', - name = 'input', - style='some_luaconsole_input_textbox' - } + local title_flow = frame.add{type = "flow", direction = "horizontal"} + title_flow.style.horizontally_stretchable = true + title_flow.style.horizontal_spacing = 8 + + local title_label = title_flow.add{type = 'label', caption = {'some-luaconsole.title'}, style = "frame_title"} + title_label.drag_target = frame + + local title_pusher = title_flow.add{type = "empty-widget", style = "draggable_space_header"} + title_pusher.style.height = 24 + title_pusher.style.horizontally_stretchable = true + title_pusher.drag_target = frame + + local title_close_button = title_flow.add{type = "sprite-button", style = "frame_action_button", sprite = "utility/close", name = 'some-luaconsole-close', tooltip = {'some-luaconsole.close_tooltip'}} + + + frame.add{type = 'label', caption = {'some-luaconsole.inputlabel'}, style = "frame_title"} + + + local input = frame.add{type = 'text-box', name = 'input', style='some-luaconsole-input-textbox', enabled = admin} input.word_wrap = true input.style.maximal_height = (player.display_resolution.height/player.display_scale*0.6) input.text = storage.cmd or "" - horizontal_flow = frame.add{type='flow', direction='horizontal'} - horizontal_flow.add{type = 'button', - name = 'some_luaconsole_close', + + bottom_flow = frame.add{type='flow', direction='horizontal'} + bottom_flow.style.horizontally_stretchable = true + + bottom_flow.add{type = 'button', + name = 'some-luaconsole-close', style='back_button', - caption = {'some_luaconsole.close'}, - tooltip = {'some_luaconsole.close_tooltip'} + caption = {'some-luaconsole.close'}, + tooltip = {'some-luaconsole.close_tooltip'} } - horizontal_flow.add{type = 'button', - name = 'some_luaconsole_exec', + bottom_pusher = bottom_flow.add{type = "empty-widget", style = "draggable_space_header"} + bottom_pusher.style.height = 24 + bottom_pusher.style.horizontally_stretchable = true + bottom_pusher.drag_target = frame + + bottom_flow.add{type = 'button', + name = 'some-luaconsole-exec', style='confirm_button', - caption = {'some_luaconsole.exec'}, - tooltip = {'some_luaconsole.exec_tooltip'} + caption = {'some-luaconsole.exec'}, + tooltip = {'some-luaconsole.exec_tooltip'}, + enabled = admin } + if not player.admin then player.gui.screen.some_luaconsole.input.text = 'You are not an admin. You may not use this mod. :(' player.gui.screen.some_luaconsole.input.enabled = false @@ -77,17 +94,17 @@ end script.on_event(defines.events.on_gui_click, function(event) - if event.element.name == 'some_luaconsole_exec' then + if event.element.name == 'some-luaconsole-exec' then exec_command(game.players[event.player_index]) - elseif event.element.name == 'some_luaconsole_close' then + elseif event.element.name == 'some-luaconsole-close' then toggleGui(game.players[event.player_index]) end end) -script.on_event('some_luaconsole_toggle', function(event) +script.on_event('some-luaconsole-toggle', function(event) toggleGui(game.players[event.player_index]) end) -script.on_event('some_luaconsole_exec', function(event) +script.on_event('some-luaconsole-exec', function(event) exec_command(game.players[event.player_index]) end) diff --git a/data.lua b/data.lua index 987bff7..39ed6b8 100644 --- a/data.lua +++ b/data.lua @@ -1,20 +1,20 @@ -data.raw["gui-style"].default["some_luaconsole_input_textbox"] = { +data.raw["gui-style"].default["some-luaconsole-input-textbox"] = { type = "textbox_style", - name = "some_console_input_textbox", + name = "some-console-input-textbox", parent = "textbox", - minimal_width = 650, + minimal_width = 700, minimal_height = 200, } data:extend({ { type = "custom-input", - name = "some_luaconsole_toggle", + name = "some-luaconsole-toggle", key_sequence = "CONTROL + RIGHTBRACKET" }, { type = "custom-input", - name = "some_luaconsole_exec", + name = "some-luaconsole-exec", key_sequence = "CONTROL + ENTER" }, }) diff --git a/info.json b/info.json index 801e1dd..3f37027 100644 --- a/info.json +++ b/info.json @@ -1,10 +1,10 @@ { "name": "some-luaconsole", - "version": "2.0.3", + "version": "2.0.4", "title": "Someone's LUA-Console", "author": "someone1337", "homepage": "https://git.somenet.org/factorio/some-luaconsole.git", - "description": "Run lua commands without losing achievements. Now remembers input-script. 'game.player' works. By default opens with CONTROL + RIGHTBRACKET. Execute last input-script with CONTROL + ENTER.", + "description": "Run lua commands without losing achievements. Now remembers input-script. 'game.player' works. By default opens with CONTROL + RIGHTBRACKET. Execute last input-script with CONTROL + ENTER (keybindings configurable).", "factorio_version": "2.0", "dependencies": [ "base>=2.0.0" diff --git a/locale/en/en.cfg b/locale/en/en.cfg index d869929..d2cf5c7 100644 --- a/locale/en/en.cfg +++ b/locale/en/en.cfg @@ -1,10 +1,10 @@ -[some_luaconsole] +[some-luaconsole] title=Someone's LUA-Console -inputlabel=To be executed (Control + Enter to execute, un-focus textarea!) -close=Close -close_tooltip=Close without executing input -exec=Execute input -exec_tooltip=Execute input tooltip +inputlabel=Input to be executed (__CONTROL__some-luaconsole-exec__ to execute without opening the lua-console) +close=Save + Close +close_tooltip=Save and close without executing input (__CONTROL__some-luaconsole-toggle__) +exec=Execute input (save + stay open) +exec_tooltip=Save + execute input; stay open (__CONTROL__some-luaconsole-exec__) [controls] some_luaconsole_toggle=Toggle Someone's LUA-Console -- 2.47.3