mirror of
https://github.com/Insality/druid
synced 2025-06-27 02:17:52 +02:00
Next/Prev example by arrows
This commit is contained in:
parent
c4694b421b
commit
e4a8a85c39
@ -34,6 +34,8 @@ local druid_examples = require("example.examples.druid_examples")
|
||||
---@field examples_list_view examples_list_view
|
||||
---@field properties_panel properties_panel
|
||||
---@field output_list output_list
|
||||
---@field next_example druid.hotkey
|
||||
---@field previous_example druid.hotkey
|
||||
|
||||
|
||||
---@param self druid.example
|
||||
@ -77,6 +79,54 @@ local function setup_layout(self)
|
||||
end
|
||||
|
||||
|
||||
---@param self druid.example
|
||||
local function on_next_example(self)
|
||||
local current_index = 1
|
||||
local examples = self.examples_list_view.examples
|
||||
|
||||
-- Find current example index
|
||||
for i, example in ipairs(examples) do
|
||||
if example.data.name_id == self.examples_list_view.selected_example.data.name_id then
|
||||
current_index = i
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
-- Get next example index (wrap around to first if at end)
|
||||
local next_index = current_index + 1
|
||||
if next_index > #examples then
|
||||
next_index = 1
|
||||
end
|
||||
|
||||
-- Select the next example
|
||||
self.examples_list_view:select_example_by_name_id(examples[next_index].data.name_id)
|
||||
end
|
||||
|
||||
|
||||
---@param self druid.example
|
||||
local function on_previous_example(self)
|
||||
local current_index = 1
|
||||
local examples = self.examples_list_view.examples
|
||||
|
||||
-- Find current example index
|
||||
for i, example in ipairs(examples) do
|
||||
if example.data.name_id == self.examples_list_view.selected_example.data.name_id then
|
||||
current_index = i
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
-- Get previous example index (wrap around to last if at start)
|
||||
local prev_index = current_index - 1
|
||||
if prev_index < 1 then
|
||||
prev_index = #examples
|
||||
end
|
||||
|
||||
-- Select the previous example
|
||||
self.examples_list_view:select_example_by_name_id(examples[prev_index].data.name_id)
|
||||
end
|
||||
|
||||
|
||||
---@param self druid.example
|
||||
local function setup_components(self)
|
||||
self.druid_logo = self.druid:new(druid_logo, "druid_logo") --[[@as examples.druid_logo]]
|
||||
@ -100,6 +150,9 @@ local function setup_components(self)
|
||||
self.output_list = self.druid:new(output_list, "output_list") --[[@as output_list]]
|
||||
self.container_output:add_container(self.output_list.root)
|
||||
|
||||
self.next_example = self.druid:new_hotkey("key_down", on_next_example, self)
|
||||
self.previous_example = self.druid:new_hotkey("key_up", on_previous_example, self)
|
||||
|
||||
do -- Component bindings
|
||||
self.examples_list_view.on_debug_info:subscribe(function(info)
|
||||
self.example_scene:set_debug_info(info)
|
||||
|
Loading…
x
Reference in New Issue
Block a user