OSRS Plugin API
    Preparing search index...

    Interface Selectable

    A text button that extends to be continuous with other elements.

    interface Selectable {
        enabled: boolean;
        height: number;
        heightRatio: number;
        onClick?: ButtonCallback;
        positionMode: LayoutMode;
        sameLine: boolean;
        sizeMode: LayoutMode;
        style: StyleTable;
        text: string;
        "text-limit": number;
        "text-wrap": boolean;
        tooltip: string;
        visible: boolean;
        width: number;
        widthRatio: number;
        x: number;
        xRatio: number;
        y: number;
        yRatio: number;
        addPopUpElement(element: UiPrimitive): any;
        removePopUpElement(element: UiPrimitive): any;
    }

    Hierarchy (View Summary)

    Index

    Properties

    enabled: boolean

    Controls whether an interactive element is enabled/disabled.

    true
    
    -- Create new container
    local newWindow = osrs.Ui.window({title = "Example Window"})

    -- Create a checkbox that is interactable, and one that is not
    local interactableCheckbox = osrs.Ui.checkbox(
    {
    label = "Interactable",
    onValueChange = function()
    osrs.print("Checkbox is Interactable")
    end
    }
    )
    local notInteractableCheckbox = osrs.Ui.checkbox(
    {
    label = "Not Interactable",
    enabled = false,
    onValueChange = function()
    osrs.print("Checkbox is not Interactable, this should not print")
    end
    }
    )

    -- Add the Checkbox's to the container
    newWindow:addChild(interactableCheckbox)
    newWindow:addChild(notInteractableCheckbox)

    -- Add container to the canvas
    osrs.Ui.canvas:addChild(newWindow)
    height: number

    The height of this element, in UI coordinate space.

    -- Create a window that has a set height
    local window = osrs.Ui.window({title = "Example Window", sizeMode = 1, height = 200})

    -- Add window to the canvas
    osrs.Ui.canvas:addChild(window)
    heightRatio: number

    The percentage height of the screen this element should take up when sizeMode is set to LayoutMode.PROPORTIONAL. The number needs to be a decimal.

    -- Create new container with a set widthRatio and heightRatio
    local newWindow = osrs.Ui.window({title = "Example Window", sizeMode = 2, widthRatio = 0.7, heightRatio = .2})

    -- Add container to the canvas
    osrs.Ui.canvas:addChild(newWindow)
    onClick?: ButtonCallback

    The callback function triggered when the button is clicked.

    -- Create new container
    local newWindow = osrs.Ui.window({title = "Example Window"})

    -- Create a button with an onClick function
    local button = osrs.Ui.textButton(
    {
    text = "Button",
    onClick = function()
    osrs.print("button clicked")
    end
    }
    )

    -- Add button to the container
    newWindow:addChild(button)

    -- Add container to the canvas
    osrs.Ui.canvas:addChild(newWindow)
    positionMode: LayoutMode

    How this element should position itself.

    LayoutMode.AUTOMATIC
    
    -- Create a window that has automatic position mode, this is default
    local window1 = osrs.Ui.window({title = "Automatic Position Mode"})

    -- Create a window that has manual position mode
    local window2 = osrs.Ui.window(
    {
    title = "Manual Position Mode",
    positionMode = osrs.Ui.LayoutMode.MANUAL
    }
    )

    -- Add the windows to the canvas
    osrs.Ui.canvas:addChild(window1)
    osrs.Ui.canvas:addChild(window2)
    sameLine: boolean

    Flag to control whether this element should be placed on the same line as the previous element.

    false
    
    -- Create a container
    local window = osrs.Ui.window({title = "Example Window"})

    -- Create three buttons, with two of them on the same line
    local button1 = osrs.Ui.textButton({text = "Button 1"})
    local button2 = osrs.Ui.textButton({text = "Button 2"})
    local button3 = osrs.Ui.textButton({text = "Button 3", sameLine = true})

    -- Add buttons to the container
    window:addChild(button1)
    window:addChild(button2)
    window:addChild(button3)

    -- Add container to the canvas
    osrs.Ui.canvas:addChild(window)
    sizeMode: LayoutMode

    How this element should size itself.

    LayoutMode::AUTOMATIC
    
    -- Create a window that has automatic size mode, this is default
    local window1 = osrs.Ui.window({title = "Automatic Size Mode"})

    -- Create a window that has manual size mode
    local window2 = osrs.Ui.window(
    {
    title = "Manual Size Mode",
    sizeMode = osrs.Ui.LayoutMode.MANUAL,
    height = 200,
    width = 200
    }
    )

    -- Add the windows to the canvas
    osrs.Ui.canvas:addChild(window1)
    osrs.Ui.canvas:addChild(window2)
    style: StyleTable

    The style, if any, that should be applied to this element.

    text: string

    The text to display within the element.

    -- Create new container
    local newWindow = osrs.Ui.window({title = "Example Window"})

    -- Create a textbox with text
    local textBox = osrs.Ui.textBox({text = "Test"})

    -- Add textbox to the container
    newWindow:addChild(textBox)

    -- Add container to the canvas
    osrs.Ui.canvas:addChild(newWindow)
    "text-limit": number

    The number of characters displayed from the text. No limit if set to -1.

    -1
    
    -- Create new containers
    local newWindow1 = osrs.Ui.window({title = "Without Text Limit", sizeMode = 1, width = 300, height = 150})
    local newWindow2 = osrs.Ui.window({title = "With Text Limit", sizeMode = 1, width = 300, height = 150})

    -- Create a textBox with a text limit, and one without (default)
    local wrapText = osrs.Ui.textBox()
    local noWrapText = osrs.Ui.textBox({["text-limit"] = 10})

    for i = 1, 10 do
    wrapText.text = string.format(wrapText.text .. " Hello World! ")
    noWrapText.text = string.format(noWrapText.text .. " Hello World! ")
    end

    -- Add the textboxs to the containers
    newWindow1:addChild(wrapText)
    newWindow2:addChild(noWrapText)

    -- Add container to the canvas
    osrs.Ui.canvas:addChild(newWindow1)
    osrs.Ui.canvas:addChild(newWindow2)
    "text-wrap": boolean

    Control for if text should wrap across lines.

    true
    
    -- Create new containers
    local newWindow1 = osrs.Ui.window({title = "With Text Wrap", sizeMode = 1, width = 300, height = 150})
    local newWindow2 = osrs.Ui.window({title = "Without Text Wrap", sizeMode = 1, width = 300, height = 150})

    -- Create a textBox with wrap text (default), and one without
    local wrapText = osrs.Ui.textBox()
    local noWrapText = osrs.Ui.textBox({["text-wrap"] = false})

    for i = 1, 10 do
    wrapText.text = string.format(wrapText.text .. " Hello World! ")
    noWrapText.text = string.format(noWrapText.text .. " Hello World! ")
    end

    -- Add the textboxs to the containers
    newWindow1:addChild(wrapText)
    newWindow2:addChild(noWrapText)

    -- Add container to the canvas
    osrs.Ui.canvas:addChild(newWindow1)
    osrs.Ui.canvas:addChild(newWindow2)
    tooltip: string

    String to display to the user when hovered over the element.

    -- Create new container
    local newWindow = osrs.Ui.window({title = "Example Window"})

    -- Create a button with a tooltip
    local button = osrs.Ui.textButton({text = "Test", tooltip = "This is a Tooltip!"})

    -- Add slider to the container
    newWindow:addChild(button)

    -- Add container to the canvas
    osrs.Ui.canvas:addChild(newWindow)
    visible: boolean

    Boolean indicating whether this UI element should draw itself.

    true
    
    -- Create new container
    local newWindow = osrs.Ui.window({title = "Example Window"})

    -- Create a button that is renderable, and one that is not
    local button1 = osrs.Ui.textButton(
    {
    text = "Peek-a-Boo",
    visible = false,
    onClick = function()
    osrs.print("BOO!")
    end
    }
    )
    local button2 = osrs.Ui.textButton(
    {
    text = "Render",
    onClick = function()
    button1.visible = not button1.visible
    end
    }
    )

    -- Add buttons to the container
    newWindow:addChild(button1)
    newWindow:addChild(button2)

    -- Add container to the canvas
    osrs.Ui.canvas:addChild(newWindow)
    width: number

    The width of this element, in UI coordinate space.

    -- Create a window that has a set width
    local window = osrs.Ui.window({title = "Example Window", sizeMode = 1, width = 200})

    -- Add window to the canvas
    osrs.Ui.canvas:addChild(window)
    widthRatio: number

    The percentage width of the screen this element should take up when sizeMode is set to LayoutMode.PROPORTIONAL. The number needs to be a decimal.

    -- Create new container with a set widthRatio and heightRatio
    local newWindow = osrs.Ui.window({title = "Example Window", sizeMode = 2, widthRatio = 0.7, heightRatio = .2})

    -- Add container to the canvas
    osrs.Ui.canvas:addChild(newWindow)
    x: number

    The horizontal component of this element's position, in UI coordinate space.

    -- Create a window with a set x position
    local window = osrs.Ui.window({title = "Example Window", positionMode = 1, x = 100})

    -- Add window to the canvas
    osrs.Ui.canvas:addChild(window)
    xRatio: number

    The percentage distance from the left side of the screen that this element's top-left corner should be placed at when positionMode is set to LayoutMode.PROPORTIONAL. The number needs to be a decimal.

    -- Create new container with a set xRatio and yRatio
    local newWindow = osrs.Ui.window({title = "Example Window", positionMode = 2, xRatio = 0.7, yRatio = .2})

    -- Add container to the canvas
    osrs.Ui.canvas:addChild(newWindow)
    y: number

    The vertical component of this element's position, in UI coordinate space.

    -- Create a window with a set y position
    local window = osrs.Ui.window({title = "Example Window", positionMode = 1, y = 100})

    -- Add window to the canvas
    osrs.Ui.canvas:addChild(window)
    yRatio: number

    The percentage distance from the top side of the screen that this element's top-left corner should be placed at when positionMode is set to LayoutMode.PROPORTIONAL. The number needs to be a decimal.

    -- Create new container with a set xRatio and yRatio
    local newWindow = osrs.Ui.window({title = "Example Window", positionMode = 2, xRatio = 0.7, yRatio = .2})

    -- Add container to the canvas
    osrs.Ui.canvas:addChild(newWindow)

    Methods

    • Adds a UI element to the pop up container.

      Parameters

      • element: UiPrimitive

        Imgui element to add to the pop up menu

        local button = osrs.Ui.textButton( { text="Clear", tooltip="Test" })

        local selectable = osrs.Ui.selectable({text = "Example", onClick = function() osrs.print("Example Print") end}) clear:addPopUpElement(test) osrs.Ui.leftPanel:addChild(button)

      Returns any

    • Removes a UI element from the pop up container.

      Parameters

      • element: UiPrimitive

        Imgui element to remove from the pop up menu.

        local button = osrs.Ui.textButton( { text="Clear", tooltip="Test" })

        local selectable = osrs.Ui.selectable({text = "Example", onClick = function() osrs.print("Example Print") end}) clear:addPopUpElement(test) clear:removePopUpElement(test) osrs.Ui.leftPanel:addChild(button)

      Returns any