Use scrolling in editor, fixed border in editor, started work on presets, jump to group/action/variable from search is mostly working (may add highlighted background and scroll to in future)

This commit is contained in:
2021-01-31 13:32:02 -06:00
parent 9f54d21932
commit d340e94d46
6 changed files with 143 additions and 23 deletions

View File

@@ -13,8 +13,6 @@ module TAC
populate_configs populate_configs
}) })
end end
# label "Manage Configurations", text_size: 36
end end
status_bar.clear do status_bar.clear do
@@ -23,7 +21,7 @@ module TAC
end end
body.clear do body.clear do
@configs_list = stack width: 1.0 do @configs_list = stack width: 1.0, height: 1.0, scroll: true do
end end
end end

View File

@@ -7,8 +7,14 @@ module TAC
@active_action = nil @active_action = nil
menu_bar.clear do menu_bar.clear do
if @options[:group_is_preset]
title "Editing group preset: #{@options[:group].name}"
elsif @options[:action_is_preset]
title "Editing action preset: #{@options[:action].name}"
else
title "Editing configuration: #{window.backend.config.name}" title "Editing configuration: #{window.backend.config.name}"
end end
end
status_bar.clear do status_bar.clear do
flow(width: 0.3333) do flow(width: 0.3333) do
@@ -24,8 +30,8 @@ module TAC
body.clear do body.clear do
flow(width: 1.0, height: 1.0) do flow(width: 1.0, height: 1.0) do
stack width: 0.33333, height: 1.0, border_thickness: 1, border_color: [0, Gosu::Color::BLACK, 0, 0] do stack width: 0.33333, height: 1.0, border_thickness_right: 1, border_color: [0, Gosu::Color::BLACK, 0, 0] do
flow(width: 1.0) do @groups_menu = flow(width: 1.0) do
label "Groups", text_size: THEME_SUBHEADING_TEXT_SIZE label "Groups", text_size: THEME_SUBHEADING_TEXT_SIZE
button get_image("#{TAC::ROOT_PATH}/media/icons/plus.png"), image_width: THEME_ICON_SIZE, tip: "Add group" do button get_image("#{TAC::ROOT_PATH}/media/icons/plus.png"), image_width: THEME_ICON_SIZE, tip: "Add group" do
@@ -53,12 +59,12 @@ module TAC
end end
end end
@groups_list = stack width: 1.0 do @groups_list = stack width: 1.0, scroll: true do
end end
end end
stack width: 0.33333, height: 1.0, border_thickness: 1, border_color: [0, Gosu::Color::BLACK, 0, 0] do stack width: 0.33333, height: 1.0, border_thickness_right: 1, border_color: [0, Gosu::Color::BLACK, 0, 0] do
flow(width: 1.0) do @actions_menu = flow(width: 1.0) do
label "Actions", text_size: THEME_SUBHEADING_TEXT_SIZE label "Actions", text_size: THEME_SUBHEADING_TEXT_SIZE
button get_image("#{TAC::ROOT_PATH}/media/icons/plus.png"), image_width: THEME_ICON_SIZE, tip: "Add action" do button get_image("#{TAC::ROOT_PATH}/media/icons/plus.png"), image_width: THEME_ICON_SIZE, tip: "Add action" do
@@ -91,12 +97,12 @@ module TAC
end end
end end
@actions_list = stack width: 1.0 do @actions_list = stack width: 1.0, scroll: true do
end end
end end
stack width: 0.331, height: 1.0 do stack width: 0.331, height: 1.0 do
flow(width: 1.0) do @variables_menu = flow(width: 1.0) do
label "Variables", text_size: THEME_SUBHEADING_TEXT_SIZE label "Variables", text_size: THEME_SUBHEADING_TEXT_SIZE
button get_image("#{TAC::ROOT_PATH}/media/icons/plus.png"), image_width: THEME_ICON_SIZE, tip: "Add variable" do button get_image("#{TAC::ROOT_PATH}/media/icons/plus.png"), image_width: THEME_ICON_SIZE, tip: "Add variable" do
if @active_action if @active_action
@@ -107,13 +113,41 @@ module TAC
end end
end end
@variables_list = stack width: 1.0 do @variables_list = stack width: 1.0, scroll: true do
end end
end end
end end
end end
populate_groups_list populate_groups_list
if @options[:group]
@active_group = @options[:group]
@active_group_label.value = @active_group.name
populate_actions_list(@active_group)
if @options[:action]
@active_action = @options[:action]
@active_action_label.value = @active_action.name
populate_variables_list(@active_action)
if @options[:variable]
# Scroll into view?
end
end
end
body.root.subscribe(:window_size_changed) do
set_list_heights
end
end
def set_list_heights
@groups_list.style.height = body.height - @groups_menu.height
@actions_list.style.height = body.height - @actions_menu.height
@variables_list.style.height = body.height - @variables_menu.height
end end
def create_group(name) def create_group(name)
@@ -221,6 +255,8 @@ module TAC
end end
end end
end end
set_list_heights
end end
def populate_actions_list(group) def populate_actions_list(group)
@@ -258,6 +294,8 @@ module TAC
end end
end end
end end
set_list_heights
end end
def populate_variables_list(action) def populate_variables_list(action)
@@ -283,6 +321,8 @@ module TAC
end end
end end
end end
set_list_heights
end end
end end
end end

View File

@@ -4,8 +4,84 @@ module TAC
def setup def setup
header_bar("Manage Presets") header_bar("Manage Presets")
status_bar.clear do
tagline "Group Presets", width: 0.495
tagline "Action Presets", width: 0.495
end
body.clear do body.clear do
label "Not Yet Implemented" 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
button get_image("#{TAC::ROOT_PATH}/media/icons/gear.png"), image_width: THEME_ICON_SIZE, tip: "Edit group" do
push_state(
Dialog::NamePromptDialog,
title: "Rename Group",
renaming: group,
list: window.backend.config.presets.groups,
callback_method: method(:update_group)
)
end
button get_image("#{TAC::ROOT_PATH}/media/icons/trashcan.png"), image_width: THEME_ICON_SIZE, tip: "Delete group", **THEME_DANGER_BUTTON do
push_state(
Dialog::ConfirmDialog,
title: "Are you sure?",
message: "Delete group and all of its actions and variables?",
callback_method: proc { delete_group(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
button get_image("#{TAC::ROOT_PATH}/media/icons/gear.png"), image_width: THEME_ICON_SIZE, tip: "Edit group" do
push_state(
Dialog::NamePromptDialog,
title: "Rename Group",
renaming: group,
list: window.backend.config.presets.groups,
callback_method: method(:update_group)
)
end
button get_image("#{TAC::ROOT_PATH}/media/icons/trashcan.png"), image_width: THEME_ICON_SIZE, tip: "Delete group", **THEME_DANGER_BUTTON do
push_state(
Dialog::ConfirmDialog,
title: "Are you sure?",
message: "Delete group and all of its actions and variables?",
callback_method: proc { delete_group(group) }
)
end
end
end
end end
end end
end end

View File

@@ -10,16 +10,18 @@ module TAC
unless search.value.strip.empty? unless search.value.strip.empty?
search_results = search_config(search.value.downcase.strip) search_results = search_config(search.value.downcase.strip)
body.clear do status_bar.clear do
flow(width: 1.0, height: 1.0) do
stack(width: 0.495, height: 1.0) do
shared_index = 0
if search_results.results.size.zero? if search_results.results.size.zero?
subtitle "No results for: \"#{search.value.strip}\"" subtitle "No results for: \"#{search.value.strip}\""
else else
subtitle "Search results for: \"#{search.value.strip}\"" subtitle "Search results for: \"#{search.value.strip}\""
end end
end
body.clear do
flow(width: 1.0, height: 1.0) do
stack(width: 0.495, height: 1.0, scroll: true) do
shared_index = 0
if search_results.groups.size.positive? if search_results.groups.size.positive?
title "Groups" title "Groups"
@@ -70,7 +72,7 @@ module TAC
end end
end end
stack(width: 0.495, height: 1.0) do stack(width: 0.495, height: 1.0, scroll: true) do
if search_results.group_presets.size.positive? if search_results.group_presets.size.positive?
title "Group Presets" title "Group Presets"

View File

@@ -60,6 +60,8 @@ module TAC
if @host_is_a_connection if @host_is_a_connection
title, message = packet.body.split(Packet::PROTOCOL_SEPERATOR, 2) title, message = packet.body.split(Packet::PROTOCOL_SEPERATOR, 2)
$window.push_state(TAC::Dialog::TACNETDialog, title: title, message: message) $window.push_state(TAC::Dialog::TACNETDialog, title: title, message: message)
else
log.e(TAG, "Remote error: #{title}: #{message}")
end end
end end
@@ -76,6 +78,8 @@ module TAC
else else
$window.push_state(TAC::Dialog::AlertDialog, title: "Invalid Config", message: "Supported config spec: v#{TAC::CONFIG_SPEC_VERSION} got v#{data.dig(:config, :spec_version)}") $window.push_state(TAC::Dialog::AlertDialog, title: "Invalid Config", message: "Supported config spec: v#{TAC::CONFIG_SPEC_VERSION} got v#{data.dig(:config, :spec_version)}")
end end
else
raise "Invalid Config!"
end end
rescue JSON::ParserError => e rescue JSON::ParserError => e

View File

@@ -50,5 +50,5 @@ require_relative "lib/tacnet/server"
USE_REDESIGN = ARGV.include?("--redesign") USE_REDESIGN = ARGV.include?("--redesign")
if not defined?(Ocra) if not defined?(Ocra)
TAC::Window.new(width: (Gosu.screen_width * 0.8).round, height: (Gosu.screen_height * 0.8).round, resizable: true, borderless: USE_REDESIGN).show TAC::Window.new(width: (Gosu.screen_width * 0.8).round, height: (Gosu.screen_height * 0.8).round, resizable: true, borderless: false).show
end end