Embed Methods:
DewdropLib:GetInstance("version")
Library Functions:
Register(parent, ...)
Unregister(parent)
Open(parent, ...)
Close([level])
Refresh([level])
AddLine(...)
IsOpen(parent)
IsRegistered(parent)
Register/Open arguments;
children point relativePoint cursorX cursorY dontHook Register only
AddLine arguments:
text
level
disabled
isTitle
notClickable
textR, textG, textB
notCheckable
isRadio
checked
checkIcon
func
arg1, arg2, arg3
hasColorSwatch
r, g, b
swatchFunc
hasOpacity
opacityFunc
opacity
cancelFunc
hasArrow
value
hasSlider
sliderTop
sliderBottom
sliderFunc
sliderValue
textHeight
justifyH
tooltipTitle
tooltipText
closeWhenClicked
Embed Methods:
DewdropLib:GetInstance("version")
Returns an instance of DewdropLib with the specified version. If the version cannot be found, an error occurs.
Arguments:
("version")
"version":
String - the major version of the library, currently "1.0"
Returns:
An instance of DewdropLib with the specified version
Example:
local dewdrop = DewdropLib:GetInstance("1.0")
Library Functions:
Register(parent, ...)
Registers a given parent with DewdropLib. Settings are initialized from the other arguments given.
Arguments:
(parent, ...)
parent:
Frame - parent frame to register.
...
Register/Open arguments
Returns:
nil
Remarks:
This automatically registers the right-click with with the parent frame.
Unregistering will cause this not to happen.
Example:
dewdrop:Register(Minimap,
    'children', function()
        dewdrop:AddLine('text', "Text")
    end
)
Unregister(parent)
Unregisters a given parent from TabletLib.
Arguments:
(parent)
parent:
Frame - registered parent frame.
Returns:
nil
Example:
tablet:Unregister(Minimap)
Open(parent, ... or parent, otherParent)
Opens the menu on the given parent, the innards are initialized either with data from Register(parent, ...) or from the given arguments.
Arguments:
(parent, ...) or (parent, otherParent)
parent:
Frame - parent frame to open.
...
Register/Open arguments
otherParent:
Frame - parent frame to get information on.
Returns:
nil
Remarks:
If you called Register(parent, ...) on the same parent, you do not need to give extra arguments, but if you do, they will take precedent.
Example:
dewdrop:Open(Minimap) -- assuming data from the registry
Close([level])
Closes the given level.
Arguments:
([level])
level:
Integer - Number of the level [1, inf). Assume 1 if not given.
Returns:
nil
Example:
dewdrop:Close(2) -- closes 2nd levels and any sublevels
Refresh([level])
Refreshes the contents of a given level
Arguments:
([level])
level:
Integer - Number of the level [1, inf). Assume 1 if not given.
Returns:
nil
Example:
dewdrop:Refresh(1) -- refreshes the first level.
AddLine(...)
Adds a line to the dropdown menu.
Arguments:
(...)
A list of key-value pairs to represent information.
Returns:
nil
Remarks:
This should only be called inside the init function of Open(frame, func).
Example:
dewdrop:AddLine(
    'text', "Hello, World!"
)
IsOpen(parent)
Returns whether the given parent frame has an open dropdown menu on it.
Arguments:
(parent)
parent:
Frame - parent frame to check.
Returns:
Boolean - whether the given parent frame has an open dropdown menu.
Example:
local open = dewdrop:IsOpen(Minimap)
IsRegistered(parent)
Returns whether the given parent frame has been registered with Dewdrop.
Arguments:
(parent)
parent:
Frame - parent frame to check.
Returns:
Boolean - whether the given parent frame has been registered with Dewdrop.
Example:
local registered = dewdrop:IsRegistered(Minimap)
Register/Open arguments;
children
function(level, value, valueN_1, valueN_2, valueN_3, valueN_4) - function to describe the innards of the menu.
Remarks:
value is the value of the menu just opened, where the level number is N.
valueN_1 is the value of level N-1, and so forth onto valueN_4, which is the value of level N-4.
Example:
dewdrop:Register(Minimap,
    'children', function(level, value)
        dewdrop:AddLine('text', "Text")
    end
)
point
String - the main attach point of the menu.
Function - a function which returns the main attach point of the menu and, optionally, the relative attach point.
Example:
dewdrop:Register(Minimap,
    'point', function(parent)
        return "TOPRIGHT", "TOPLEFT"
    end
)
relativePoint
String - the relative attach point of the menu.
Function - a function which returns the relative attach point of the menu.
Example:
dewdrop:Register(Minimap,
    'point', function(parent)
        return "TOPRIGHT"
    end,
    'relativePoint', function(parent)
        return "TOPLEFT"
    end
)
cursorX
Boolean - Whether the menu follows the cursor on the x-axis
Remarks:
In this case, point should be "BOTTOM" or "TOP", and relativePoint should be the opposite.
Example:
dewdrop:Register(Minimap,
    'point', "TOP",
    'relativePoint', "BOTTOM",
    'cursorX', true
)
cursorY
Boolean - Whether the menu follows the cursor on the y-axis
Remarks:
In this case, point should be "LEFT" or "RIGHT", and relativePoint should be the opposite.
Example:
dewdrop:Register(Minimap,
    'point', "LEFT",
    'relativePoint', "RIGHT",
    'cursorY', true
)
dontHook Register only
Boolean - whether the mouse click scripts will be hooked to open/close the menu. You will need to manually call Open() if you do this.
Example:
dewdrop:Register(Minimap,
    'point', "LEFT",
    'dontHook', true
)
AddLine arguments:
text
String - the text on the button.
Example:
dewdrop:AddLine(
    'text', "Hello, World!",
)
level
Integer - the level the line should be added at.
Remarks:
In most cases, you won't need this, as the level is inferred automatically.
Example:
dewdrop:AddLine(
    'text', "Hello, World!",
    'level', 2
)
disabled
Boolean - whether the button is disabled.
Remarks:
Disabling causes the button to be unclickable and makes the text gray.
Example:
dewdrop:AddLine(
    'text', "Hello, World!",
    'disabled', true
)
isTitle
Boolean - whether the button is a title.
Remarks:
Being a title causes the button to be disabled, but have the standard yellow color.
Example:
dewdrop:AddLine(
    'text', "I am a title",
    'isTitle', true
)
notClickable
Boolean - whether the button is clickable or not.
Remarks:
Being unclickable causes the button to be disabled, but have the standard white color, so it would look like other buttons.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'notClickable', true
)
textR, textG, textB
textR
Number - The red value. [0, 1]
textG
Number - The green value. [0, 1]
textB
Number - The blue value. [0, 1]
Remarks:
Sets the text color of the button, overriding disabled, isTitle, or notClickable's colors.
This only works if all three colors are set.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'textR', 1,
    'textG', 1,
    'textB', 1
)
notCheckable
Boolean - whether the button is checkable or not.
Remarks:
Really, this being set just causes the blank space that would be normally for a checkbox to not be there.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'notCheckable', true
)
isRadio
Boolean - whether the button is a radio button.
Remarks:
If set to true, it uses a texture similar to "Interface\Buttons\UI-RadioButton", which is 4 buttons side-by-side, unchecked, checked, highlight, and blank.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'isRadio', true,
)
checked
Boolean - whether the button is checked or not.
Remarks:
If set to true, it sets the check's alpha to fully visible, otherwise makes it invisible.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'checked', math.random() < 0.5
)
checkIcon
String - path to the check texture.
Remarks:
If not set, assume "Interface\\Buttons\\UI-CheckBox-Check"
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'checkIcon', "Interface\\Buttons\\UI-CheckBox-Check"
)
func
function(arg1, arg2, arg3) - function to call when button is clicked.
Remarks:
The args fed in are the ones given by arg1, arg2, and arg3.
After being called, the menu level is refreshed, so any checks or whatnot are updated.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'func', function()
        print("Click!")
    end
)
arg1, arg2, arg3
arg1
Value - First value fed into the given func
arg2
Value - Second value fed into the given func
arg3
Value - Third value fed into the given func
Remarks:
You don't need all 3 to work, you may only specify if needed.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'func', function(val)
        print("Click! " .. val)
    end,
    'arg1', math.random()
)
hasColorSwatch
Boolean - whether the button has a color swatch.
Remarks:
If hasColorSwatch is true, then func has no purpose, since clicking opens up a color picker.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'hasColorSwatch', true
)
r, g, b
r
Number - The red value. [0, 1]
g
Number - The green value. [0, 1]
b
Number - The blue value. [0, 1]
Remarks:
Sets the color of the color swatch, and conseqently, the color picker.
This only works if all three colors are set.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'hasColorSwatch', true,
    'r', 1,
    'g', 1,
    'b', 1
)
swatchFunc
function(r, g, b) - function called when the color changes.
Remarks:
Requires that hasColorSwatch is true.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'hasColorSwatch', true,
    'swatchFunc', function(r, g, b)
        print("New color: " .. r .. "-" .. g .. "-" .. b)     end
)
hasOpacity
Boolean - whether the color picker includes opacity.
Remarks:
Requires that hasColorSwatch is true.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'hasColorSwatch', true,
    'hasOpacity', true
)
opacityFunc
function(value) - function called when the opacity changes.
Remarks:
Requires that hasColorSwatch and hasOpacity are true.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'hasColorSwatch', true,
    'hasOpacity', true
    'opacityFunc', function(value)
        print("New alpha: " .. value)
    end
)
opacity
Number - current opacity level. [0, 1]
Remarks:
Requires that hasColorSwatch and hasOpacity are true.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'hasColorSwatch', true,
    'hasOpacity', true
    'opacity', math.random()
)
cancelFunc
function(r, g, b, a) - function called when cancel is pushed. Arguments are the previous values.
Remarks:
Requires that hasColorSwatch and hasOpacity are true.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'hasColorSwatch', true,
    'hasOpacity', true
    'r', 0,
    'g', 0.5,
    'b', 1,
    'opacity', 1
    'cancelFunc', function(r, g, b, a)
        assert(r == 0 and g == 0.5 and b == 1 and a == 1)     end )
hasArrow
Boolean - whether button has an arrow.
Remarks:
Requires that either value is not nil or hasSlider is true.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'hasArrow', true,
    'value', "hello"
)
value
Value - any unique, identifiable value.
Remarks:
Requires that hasArrow is true.
The same value will be fed in to the initalizer function when the sublevel is opened.
Example:
if level == 1 then     dewdrop:AddLine(
        'text', "Hello,",
        'hasArrow', true,
        'value', "hello"
    )
elseif level == 2
    if value == "hello" then         dewdrop:AddLine(
            'text', "World!"
        )
    end
end
hasSlider
Boolean - whether the sublevel is a slider.
Remarks:
Requires that hasArrow is true.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'hasArrow', true,
    'hasSlider', true
)
sliderTop
String - the text representing the high value
Remarks:
Requires that hasArrow and hasSlider are true.
If not given, "100%" is assumed.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'hasArrow', true,
    'hasSlider', true
    'sliderTop', '100%'
)
sliderBottom
String - the text representing the high value
Remarks:
Requires that hasArrow and hasSlider are true.
If not given, "0%" is assumed.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'hasArrow', true,
    'hasSlider', true
    'sliderBottom', '0%'
)
sliderValue
Number - the current value of the slider. [0, 1]
Remarks:
Requires that hasArrow and hasSlider are true.
If not given, 0.5 is assumed.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'hasArrow', true,
    'hasSlider', true
    'sliderValue', 0.5
)
sliderFunc
function(value) - function to call when the value changed.
Remarks:
Requires that hasArrow and hasSlider are true.
If sliderFunc(value) returns a string, then that is used to set the current value string on the slider.
value will always be within [0, 1].
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'hasArrow', true,
    'hasSlider', true
    'sliderFunc', function(value)
        print("New value: " .. value)
        return format("%.0f%%", value)
    end
)
textHeight
Number - height of the text.
Remarks:
If not provided, 10 is assumed.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'textHeight', 10
)
justifyH
String - horizontal justification of the text.
Remarks:
Must be either "LEFT", "RIGHT", or "CENTER"
If not provided, "LEFT" is assumed.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'justifyH', "CENTER"
)
tooltipTitle
String - title of the newbie tooltip.
Remarks:
If not provided, the tooltip won't show up.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'tooltipTitle', "Hello"
)
tooltipText
String - text of the newbie tooltip.
Remarks:
Requires tooltipTitle to be set.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'tooltipTitle', "Hello",
    'tooltipText', "world!"
)
closeWhenClicked
Boolean - whether to close menu when clicked.
Remarks:
This closes the whole menu, not just the one level.
Example:
dewdrop:AddLine(
    'text', "Hello, world!",
    'closeWhenClicked', true
)