From a34b7270ec2aac691732a1688d93989a4c23a40a Mon Sep 17 00:00:00 2001
From: Robert Jelic <36573031+NoryiE@users.noreply.github.com>
Date: Sun, 26 Jun 2022 18:23:04 +0200
Subject: [PATCH] Update Dropdown.md
---
docs/objects/Dropdown.md | 249 +++++++++++++++++++++++++++++----------
1 file changed, 184 insertions(+), 65 deletions(-)
diff --git a/docs/objects/Dropdown.md b/docs/objects/Dropdown.md
index ba649d6..98adaf8 100644
--- a/docs/objects/Dropdown.md
+++ b/docs/objects/Dropdown.md
@@ -1,18 +1,32 @@
-Dropdowns are objects where you can create endless entrys the user can click on a button and it opens a "list" where the user can choose a entry
+Dropdowns are objects where the user can click on a button, this will open a list where the user can choose from.
-Here is a example of how to create a standard dropdown:
+If you want to access values inside items this is how the table for single items is made (just a example):
```lua
-local mainFrame = basalt.createFrame("myFirstFrame"):show()
-local aDropdown = mainFrame:addDropdown("myFirstDropdown"):show()
+item = {
+ text="1. Entry",
+ bgCol=colors.black,
+ fgCol=colors.white
+ args = {}
+}
```
-Here are all possible functions available for dropdowns:
Remember Dropdown also inherits from [Object](objects/Object.md)
## addItem
-Adds a item to the dropdown
+Adds a item into the dropdown
+#### Parameters:
+1. `string` The entry name
+2. `number|color` unique default background color - optional
+3. `number|color` unique default text color - optional
+4. `any` any value - you could access this later in a :onChange() event (you need to use :getValue()) - optional
+
+#### Returns:
+1. `object` The object in use
+
+#### Usage:
+* Creates a default dropdown with 3 entries
```lua
local mainFrame = basalt.createFrame("myFirstFrame"):show()
local aDropdown = mainFrame:addDropdown("myFirstDropdown"):show()
@@ -20,12 +34,18 @@ aDropdown:addItem("1. Entry")
aDropdown:addItem("2. Entry",colors.yellow)
aDropdown:addItem("3. Entry",colors.yellow,colors.green)
```
-#### Parameters: string text, number bgcolor, number fgcolor, any ... - (text is the displayed text, bgcolor and fgcolors the colors of background/text and args (...) is something dynamic, you wont see them but if you require some more information per item you can use that)
-#### Returns: self
## removeItem
Removes a item from the dropdown
+#### Parameters:
+1. `number` The index which should get removed
+
+#### Returns:
+1. `object` The object in use
+
+#### Usage:
+* Creates a default dropdown with 3 entries and removes the second one.
```lua
local mainFrame = basalt.createFrame("myFirstFrame"):show()
local aDropdown = mainFrame:addDropdown("myFirstDropdown"):show()
@@ -34,26 +54,96 @@ aDropdown:addItem("2. Entry",colors.yellow)
aDropdown:addItem("3. Entry",colors.yellow,colors.green)
aDropdown:removeItem(2)
```
-#### Parameters: number index
-#### Returns: self
## editItem
-Edits a item on the dropdown
+Edits a item from the dropdown
+#### Parameters:
+1. `number` The index which should be edited
+2. `string` The new item name
+3. `number` the new item background color - optional
+4. `number` The new item text color - optional
+5. `any` New additional information - optional
+
+#### Returns:
+1. `object` The object in use
+
+#### Usage:
+* Creates a default dropdown with 3 entries and edits the second one.
```lua
local mainFrame = basalt.createFrame("myFirstFrame"):show()
local aDropdown = mainFrame:addDropdown("myFirstDropdown"):show()
aDropdown:addItem("1. Entry")
aDropdown:addItem("2. Entry",colors.yellow)
aDropdown:addItem("3. Entry",colors.yellow,colors.green)
-aDropdown:editItem(3,"3. Edited Entry",colors.yellow,colors.green)
+aDropdown:editItem(2, "Still 2. Entry", colors.red)
+```
+
+## getItem
+Returns a item by index
+
+#### Parameters:
+1. `number` The index which should be returned
+
+#### Returns:
+1. `table` The item table example: {text="1. Entry", bgCol=colors.black, fgCol=colors.white}
+
+#### Usage:
+* Creates a default dropdown with 3 entries and edits the second one.
+```lua
+local mainFrame = basalt.createFrame("myFirstFrame"):show()
+local aDropdown = mainFrame:addDropdown("myFirstDropdown"):show()
+aDropdown:addItem("1. Entry")
+aDropdown:addItem("2. Entry",colors.yellow)
+aDropdown:addItem("3. Entry",colors.yellow,colors.green)
+basalt.debug(aDropdown:getItem(2).text)
+```
+
+## getItemCount
+Returns the current item count
+
+#### Returns:
+1. `number` The item list count
+
+#### Usage:
+* Creates a default dropdown with 3 entries and prints the current item count.
+```lua
+local mainFrame = basalt.createFrame("myFirstFrame"):show()
+local aDropdown = mainFrame:addDropdown("myFirstDropdown"):show()
+aDropdown:addItem("1. Entry")
+aDropdown:addItem("2. Entry",colors.yellow)
+aDropdown:addItem("3. Entry",colors.yellow,colors.green)
+basalt.debug(aDropdown:getItemCount())
+```
+
+## getAll
+Returns all items as table
+
+#### Returns:
+1. `table` All items
+
+#### Usage:
+* Creates a default menubar with 3 entries and prints a table.
+```lua
+local mainFrame = basalt.createFrame("myFirstFrame"):show()
+local aDropdown = mainFrame:addDropdown("myFirstDropdown"):show()
+aDropdown:addItem("1. Entry")
+aDropdown:addItem("2. Entry",colors.yellow)
+aDropdown:addItem("3. Entry",colors.yellow,colors.green)
+basalt.debug(aDropdown:getAll())
```
-#### Parameters: number index, string text, number bgcolor, number fgcolor, any ...
-#### Returns: self
## setScrollable
-Makes the dropdown scrollable
+Makes the dropdown scrollable.
+#### Parameters:
+1. `boolean` if the dropdown should be scrollable or not
+
+#### Returns:
+1. `object` The object in use
+
+#### Usage:
+* Creates a default dropdown with 3 entries and makes it scrollable.
```lua
local mainFrame = basalt.createFrame("myFirstFrame"):show()
local aDropdown = mainFrame:addDropdown("myFirstDropdown"):show()
@@ -62,26 +152,35 @@ aDropdown:addItem("2. Entry",colors.yellow)
aDropdown:addItem("3. Entry",colors.yellow,colors.green)
aDropdown:setScrollable(true)
```
-#### Parameters: boolean isScrollable
-#### Returns: self
## selectItem
selects a item in the dropdown (same as a player would click on a item)
+#### Parameters:
+1. `number` The index which should get selected
+
+#### Returns:
+1. `object` The object in use
+
+#### Usage:
+* Creates a default dropdown with 3 entries and selects the second entry.
```lua
local mainFrame = basalt.createFrame("myFirstFrame"):show()
local aDropdown = mainFrame:addDropdown("myFirstDropdown"):show()
aDropdown:addItem("1. Entry")
aDropdown:addItem("2. Entry",colors.yellow)
aDropdown:addItem("3. Entry",colors.yellow,colors.green)
-aDropdown:selectItem(1)
+aDropdown:selectItem(2)
```
-#### Parameters: number index
-#### Returns: self
## clear
-clears the entire list (dropdown)
+Removes all items.
+#### Returns:
+1. `object` The object in use
+
+#### Usage:
+* Creates a default dropdown with 3 entries and removes them immediatley. Which makes no sense.
```lua
local mainFrame = basalt.createFrame("myFirstFrame"):show()
local aDropdown = mainFrame:addDropdown("myFirstDropdown"):show()
@@ -90,89 +189,109 @@ aDropdown:addItem("2. Entry",colors.yellow)
aDropdown:addItem("3. Entry",colors.yellow,colors.green)
aDropdown:clear()
```
-#### Parameters: -
-#### Returns: self
## getItemIndex
returns the item index of the currently selected item
+#### Returns:
+1. `number` The current index
+
+#### Usage:
+* Creates a default dropdown with 3 entries selects the second entry and prints the currently selected index.
```lua
local mainFrame = basalt.createFrame("myFirstFrame"):show()
local aDropdown = mainFrame:addDropdown("myFirstDropdown"):show()
aDropdown:addItem("1. Entry")
aDropdown:addItem("2. Entry",colors.yellow)
aDropdown:addItem("3. Entry",colors.yellow,colors.green)
-aDropdown:getItemIndex()
+aDropdown:selectItem(2)
+basalt.debug(aDropdown:getItemIndex())
```
-#### Parameters: -
-#### Returns: number index
## setSelectedItem
-Sets the background of the item which is currently selected
+Sets the background and the foreground of the item which is currently selected
+#### Parameters:
+1. `number|color` The background color which should be used
+2. `number|color` The text color which should be used
+
+#### Returns:
+1. `object` The object in use
+
+#### Usage:
+* Creates a default dropdown with 4 entries and sets the selection background color to green.
```lua
local mainFrame = basalt.createFrame("myFirstFrame"):show()
local aDropdown = mainFrame:addDropdown("myFirstDropdown"):show()
aDropdown:addItem("1. Entry")
aDropdown:addItem("2. Entry",colors.yellow)
aDropdown:addItem("3. Entry",colors.yellow,colors.green)
-aDropdown:setSelectedItem(colors.green, colors.blue)
+aDropdown:addItem("4. Entry")
+aDropdown:setSelectedItem(colors.green)
```
-#### Parameters: number bgcolor, number fgcolor, boolean isActive (isActive means if different colors for selected item should be used)
-#### Returns: self
-## setOffset
-sets the dropdown offset (will automatically change if scrolling is active)
+## setIndexOffset
+Sets the offset of the dropdown (the same as you would scroll) - default is 0
+#### Parameters:
+1. `number` The offset value
+
+#### Returns:
+1. `object` The object in use
+
+#### Usage:
+* Creates a default dropdown with 6 entries and sets the offset to 3.
```lua
local mainFrame = basalt.createFrame("myFirstFrame"):show()
local aDropdown = mainFrame:addDropdown("myFirstDropdown"):show()
aDropdown:addItem("1. Entry")
-aDropdown:addItem("2. Entry",colors.yellow)
-aDropdown:addItem("3. Entry",colors.yellow,colors.green)
-aDropdown:setOffset(3)
+aDropdown:addItem("2. Entry")
+aDropdown:addItem("3. Entry")
+aDropdown:addItem("4. Entry")
+aDropdown:addItem("5. Entry")
+aDropdown:addItem("6. Entry")
+aDropdown:setIndexOffset(3)
```
-#### Parameters: number offsetValue
-#### Returns: self
-## getOffset
-returns the current offset
+## getIndexOffset
+Returns the current index offset
+
+#### Returns:
+1. `number` offset value
+
+#### Usage:
+* Creates a default dropdown with 6 entries and sets the offset to 3, also prints the current offset.
```lua
local mainFrame = basalt.createFrame("myFirstFrame"):show()
local aDropdown = mainFrame:addDropdown("myFirstDropdown"):show()
aDropdown:addItem("1. Entry")
-aDropdown:addItem("2. Entry",colors.yellow)
-aDropdown:addItem("3. Entry",colors.yellow,colors.green)
-aDropdown:getOffset()
+aDropdown:addItem("2. Entry")
+aDropdown:addItem("3. Entry")
+aDropdown:addItem("4. Entry")
+aDropdown:addItem("5. Entry")
+aDropdown:addItem("6. Entry")
+aDropdown:setIndexOffset(3)
+basalt.debug(aDropdown:getIndexOffset())
```
-#### Parameters: -
-#### Returns: number offsetValue
-
-## getOffset
-returns the current offset
-
-```lua
-local mainFrame = basalt.createFrame("myFirstFrame"):show()
-local aDropdown = mainFrame:addDropdown("myFirstDropdown"):show()
-aDropdown:addItem("1. Entry")
-aDropdown:addItem("2. Entry",colors.yellow)
-aDropdown:addItem("3. Entry",colors.yellow,colors.green)
-aDropdown:getOffset()
-```
-#### Parameters: -
-#### Returns: number offsetValue
## setDropdownSize
-sets the dropdown size (if you click on the button)
+Sets the size of the opened dropdown
+#### Parameters:
+1. `number` The width value
+2. `number` The height value
+
+#### Returns:
+1. `object` The object in use
+
+#### Usage:
+* Creates a default dropdown, adds 3 entries and sets the dropdown size to 15w, 8h
```lua
local mainFrame = basalt.createFrame("myFirstFrame"):show()
-local aDropdown = mainFrame:addDropdown("myFirstDropdown"):show()
+local aDropdown = mainFrame:addDropdown("myFirstDropdown"):setDropdownSize(15,8):show()
aDropdown:addItem("1. Entry")
-aDropdown:addItem("2. Entry",colors.yellow)
-aDropdown:addItem("3. Entry",colors.yellow,colors.green)
-aDropdown:setDropdownSize(12, 4)
+aDropdown:addItem("2. Entry")
+aDropdown:addItem("3. Entry")
```
-#### Parameters: number width, number height
-#### Returns: self
\ No newline at end of file
+