diff --git a/lib/dialogs/name_prompt_dialog.rb b/lib/dialogs/name_prompt_dialog.rb index 8de0ff7..0113d7a 100644 --- a/lib/dialogs/name_prompt_dialog.rb +++ b/lib/dialogs/name_prompt_dialog.rb @@ -5,7 +5,7 @@ def build background Gosu::Color::GRAY flow width: 1.0 do label "Name", width: 0.25 - @name = edit_line @options[:renaming] ? @options[:renaming].name : "", width: 0.70 + @name = edit_line @options[:renaming] ? @options[:renaming].name : "", filter: method(:filter), width: 0.70 end @name_error = label "", color: TAC::Palette::TACNET_CONNECTION_ERROR @name_error.hide @@ -37,6 +37,10 @@ def build end end end + + def filter(text) + text.match(/[A-Za-z0-9,._\-]/) ? text : "" + end end end end \ No newline at end of file diff --git a/lib/states/manage_configurations.rb b/lib/states/manage_configurations.rb index 10319b5..f4c2f48 100644 --- a/lib/states/manage_configurations.rb +++ b/lib/states/manage_configurations.rb @@ -53,10 +53,25 @@ def populate_configs name = File.basename(config_file, ".json") - button "#{name}", width: 0.965 do + button "#{name}", width: 0.94 do change_config(name) end + button get_image("#{TAC::ROOT_PATH}/media/icons/gear.png"), image_width: THEME_ICON_SIZE, tip: "Rename configuration" do + push_state(Dialog::NamePromptDialog, title: "Rename Config", callback_method: proc { |new_name| + FileUtils.mv( + "#{TAC::CONFIGS_PATH}/#{name}.json", + "#{TAC::CONFIGS_PATH}/#{new_name}.json" + ) + + if window.backend.settings.config == name + change_config(new_name) + end + + populate_configs + }) + end + button get_image("#{TAC::ROOT_PATH}/media/icons/trashcan.png"), image_width: THEME_ICON_SIZE, **THEME_DANGER_BUTTON, tip: "Delete configuration" do push_state(Dialog::ConfirmDialog, title: "Delete Config?", callback_method: proc { File.delete("#{TAC::CONFIGS_PATH}/#{name}.json") diff --git a/timecrafters_configuration_tool.rb b/timecrafters_configuration_tool.rb index b763b3d..790d08e 100644 --- a/timecrafters_configuration_tool.rb +++ b/timecrafters_configuration_tool.rb @@ -2,6 +2,7 @@ require "socket" require "securerandom" require "json" +require "fileutils" require_relative "lib/tac" require_relative "lib/palette"