mirror of
https://github.com/TimeCrafters/timecrafters_configuration_tool_desktop.git
synced 2025-12-15 21:32:35 +00:00
125 lines
4.4 KiB
Ruby
125 lines
4.4 KiB
Ruby
module TAC
|
|
class Pages
|
|
class Presets < Page
|
|
def setup
|
|
header_bar("Manage Presets")
|
|
|
|
status_bar.clear do
|
|
tagline "Group Presets", width: 0.495
|
|
tagline "Action Presets", width: 0.495
|
|
end
|
|
|
|
body.clear do
|
|
flow(width: 1.0, height: 1.0) do
|
|
@group_presets = stack(width: 0.49995, height: 1.0, scroll: true, border_thickness_right: 1, border_color: [0, Gosu::Color::BLACK, 0, 0]) do
|
|
end
|
|
|
|
@action_presets = stack(width: 0.49995, height: 1.0, scroll: true) do
|
|
end
|
|
end
|
|
end
|
|
|
|
populate_group_presets
|
|
populate_action_presets
|
|
end
|
|
|
|
def populate_group_presets
|
|
@group_presets.clear do
|
|
window.backend.config.presets.groups.each_with_index do |group, i|
|
|
flow(width: 1.0, **THEME_ITEM_CONTAINER_PADDING) do
|
|
background i.even? ? THEME_EVEN_COLOR : THEME_ODD_COLOR
|
|
|
|
button group.name, width: 0.895 do
|
|
page(TAC::Pages::Editor,{ group: group, group_is_preset: true })
|
|
end
|
|
|
|
button get_image("#{TAC::ROOT_PATH}/media/icons/gear.png"), image_width: THEME_ICON_SIZE, tip: "Edit group preset" do
|
|
push_state(
|
|
Dialog::NamePromptDialog,
|
|
title: "Rename Group Preset",
|
|
renaming: group,
|
|
list: window.backend.config.presets.groups,
|
|
callback_method: method(:update_group_preset)
|
|
)
|
|
end
|
|
|
|
button get_image("#{TAC::ROOT_PATH}/media/icons/trashcan.png"), image_width: THEME_ICON_SIZE, tip: "Delete group preset", **THEME_DANGER_BUTTON do
|
|
push_state(
|
|
Dialog::ConfirmDialog,
|
|
title: "Are you sure?",
|
|
message: "Delete group preset and all of its actions and variables?",
|
|
callback_method: proc { delete_group_preset(group) }
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
def populate_action_presets
|
|
@action_presets.clear do
|
|
window.backend.config.presets.actions.each_with_index do |action, i|
|
|
flow(width: 1.0, **THEME_ITEM_CONTAINER_PADDING) do
|
|
background i.even? ? THEME_EVEN_COLOR : THEME_ODD_COLOR
|
|
|
|
button action.name, width: 0.895 do
|
|
page(TAC::Pages::Editor,{ action: action, action_is_preset: true })
|
|
end
|
|
|
|
button get_image("#{TAC::ROOT_PATH}/media/icons/gear.png"), image_width: THEME_ICON_SIZE, tip: "Edit action preset" do
|
|
push_state(
|
|
Dialog::NamePromptDialog,
|
|
title: "Rename Action Preset",
|
|
renaming: action,
|
|
list: window.backend.config.presets.actions,
|
|
callback_method: method(:update_action_preset)
|
|
)
|
|
end
|
|
|
|
button get_image("#{TAC::ROOT_PATH}/media/icons/trashcan.png"), image_width: THEME_ICON_SIZE, tip: "Delete action preset", **THEME_DANGER_BUTTON do
|
|
push_state(
|
|
Dialog::ConfirmDialog,
|
|
title: "Are you sure?",
|
|
message: "Delete action preset and all of its actions and variables?",
|
|
callback_method: proc { delete_action_preset(action) }
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
def update_group_preset(group, name)
|
|
group.name = name
|
|
window.backend.config.presets.groups.sort_by! { |g| g.name.downcase }
|
|
window.backend.config_changed!
|
|
|
|
populate_group_presets
|
|
end
|
|
|
|
def delete_group_preset(group)
|
|
window.backend.config.presets.groups.delete(group)
|
|
window.backend.config.presets.groups.sort_by! { |g| g.name.downcase }
|
|
window.backend.config_changed!
|
|
|
|
populate_group_presets
|
|
end
|
|
|
|
def update_action_preset(action, name)
|
|
action.name = name
|
|
window.backend.config.presets.actions.sort_by! { |a| a.name.downcase }
|
|
window.backend.config_changed!
|
|
|
|
populate_action_presets
|
|
end
|
|
|
|
def delete_action_preset(action)
|
|
window.backend.config.presets.actions.delete(action)
|
|
window.backend.config.presets.actions.sort_by! { |a| a.name.downcase }
|
|
window.backend.config_changed!
|
|
|
|
populate_action_presets
|
|
end
|
|
end
|
|
end
|
|
end |