mwseMCMParagraphField⚓︎
A ParagraphField allows you to enter a multi-line of text. Press Enter to submit or Shift+Enter to enter a new line.
This type inherits the following: mwseMCMTextField, mwseMCMSetting, mwseMCMComponent
Properties⚓︎
buttonText
⚓︎
Unused for the Paragraph Field.
Returns:
result
(string)
callback
⚓︎
The custom function called when the player interacts with this Setting.
Returns:
result
(nil, fun(self: mwseMCMSetting))
childIndent
⚓︎
The left padding size in pixels. Used on all the child components.
Returns:
result
(integer, nil)
childSpacing
⚓︎
The bottom border size in pixels. Used on all the child components.
Returns:
result
(integer, nil)
class
⚓︎
Returns:
result
(string)
componentType
⚓︎
The type of this component.
Returns:
result
("Setting")
createContentsContainer
⚓︎
This method creates the contents of a component. Not every component implements this method.
Returns:
result
(nil, fun(self: mwseMCMComponent, outerContainer: tes3uiElement))
description
⚓︎
If in a Sidebar Page, the description will be shown on mouseover.
Returns:
result
(string, nil)
elements
⚓︎
This dictionary-style table holds all the UI elements of the ParagraphField, for easy access.
Returns:
result
(mwseMCMParagraphFieldElements)
height
⚓︎
Fixes the height of the paragraph field to a custom value. The height is set on the self.elements.scrollPane.parent.height
UI element.
Returns:
result
(integer, nil)
indent
⚓︎
The left padding size in pixels. Only used if the childIndent
isn't set on the parent component.
Returns:
result
(integer)
inGameOnly
⚓︎
Used only on components without a variable. For components with a variable, the variable's inGameOnly
field is used. For more info see checkDisabled.
Returns:
result
(boolean)
inGameOnly
⚓︎
If true, the setting is disabled while the game is on main menu.
Returns:
result
(boolean)
label
⚓︎
Text shown above the text field.
Returns:
result
(string)
makeComponent
⚓︎
This method must be implemented by child classes of mwseMCMSetting.
Returns:
result
(nil, fun(self: mwseMCMSetting, innerContainer: tes3uiElement))
minHeight
⚓︎
Unused in Paragraph Field.
Returns:
result
(nil)
mouseOvers
⚓︎
This array of UI elements will have an event handler registered to trigger "MCM:MouseOver" event. For more info, see registerMouseOverElements method.
Returns:
result
(tes3uiElement[], nil)
numbersOnly
⚓︎
If true, only numbers will be allowed in this TextField.
Returns:
result
(boolean)
paddingBottom
⚓︎
The bottom border size in pixels. Only used if the childSpacing
is unset on the parent component.
Returns:
result
(integer)
parentComponent
⚓︎
Returns:
result
(mwseMCMComponent, nil)
postCreate
⚓︎
Custom formatting function to make adjustments to any element saved in self.elements
.
Returns:
result
(nil, fun(self: mwseMCMComponent))
restartRequired
⚓︎
If true, updating this Setting will notify the player to restart the game.
Returns:
result
(boolean)
restartRequiredMessage
⚓︎
The message shown if restartRequired is triggered. The default text is a localized version of: "The game must be restarted before this change will come into effect.".
Returns:
result
(string)
sCancel
⚓︎
Set to the value of sCancel
GMST.
Returns:
result
(string)
sNewValue
⚓︎
The message shown after a new value is submitted. This can be formatted with a '%s' which will be replaced with the new value. The default text is a localized version of: "New value: '%s'".
Returns:
result
(string)
sNo
⚓︎
Set to the value of sNo
GMST.
Returns:
result
(string)
sOK
⚓︎
Set to the value of sOK
GMST.
Returns:
result
(string)
sYes
⚓︎
Set to the value of sYes
GMST.
Returns:
result
(string)
variable
⚓︎
The Variable this setting will update.
Returns:
result
(mwseMCMVariable, nil)
Methods⚓︎
callback
⚓︎
This method is called when setting is updated. Shows a messageBox with self.sNewValue
with curent variable value formatted in.
myObject:callback()
checkDisabled
⚓︎
Returns true if the component should be disabled.
Componets with a variable:
- True if the Component's variable has
inGameOnly
field set to true, and the game is on the main menu. For components with multiple subcomponent (Category), the check is done for each subcomponent.
Components without a variable:
- True if the Component's
inGameOnly
field is set to true, and the game is on the main menu.
local result = myObject:checkDisabled()
Returns:
result
(boolean)
create
⚓︎
This method creates the UI elements that comprise this Setting.
myObject:create(parentBlock)
Parameters:
parentBlock
(tes3uiElement)
createContentsContainer
⚓︎
This method creates the UI elements specific to TextField.
myObject:createContentsContainer(parentBlock)
Parameters:
parentBlock
(tes3uiElement)
createInnerContainer
⚓︎
Creates component's innerContainer UI element inside given parentBlock
, and stores it in the self.elements.innerContainer
. The innerContainer will add self.indent
additional padding on the left if the component has a label.
myObject:createInnerContainer(parentBlock)
Parameters:
parentBlock
(tes3uiElement)
createLabel
⚓︎
Creates component's label UI element.
First, it calls self:createLabelBlock
and creates the label element inside new labelBlock
. Stores both new UI elements in the self.elements
and self.mouseOvers
.
myObject:createLabel(parentBlock)
Parameters:
parentBlock
(tes3uiElement)
createLabelBlock
⚓︎
Creates component's labelBlock UI element inside given parentBlock
, and stores it in the self.elements.labelBlock
and self.mouseOvers
.
myObject:createLabelBlock(parentBlock)
Parameters:
parentBlock
(tes3uiElement)
createOuterContainer
⚓︎
Creates component's outerContainer UI element inside given parentBlock
, and stores it in the self.elements.outerContainer
and self.mouseOvers
. The outerContainer holds all the other UI elements that comprise a component.
myObject:createOuterContainer(parentBlock)
Parameters:
parentBlock
(tes3uiElement)
createSubmitButton
⚓︎
This method creates the submit button UI element and stores it in self.elements.submitButton
.
myObject:createSubmitButton(parentBlock)
Parameters:
parentBlock
(tes3uiElement)
disable
⚓︎
This method disables the component's UI elements. That includes: changing the color of the UI elements to the tes3.palette.disabledColor
and setting button widget state to tes3.uiState.disabled
.
myObject:disable()
enable
⚓︎
Enables the component's UI elements. That includes: changing the color of the UI elements to the tes3.palette.normalColor
and registering handlers for tes3.uiEvent.mouseClick
for buttons.
myObject:enable()
getComponent
⚓︎
Creates a new Component of given class or returns the given Component.
local component = myObject:getComponent({ class = ..., label = ..., indent = ..., childIndent = ..., paddingBottom = ..., childSpacing = ..., inGameOnly = ..., postCreate = ..., parentComponent = ... })
Parameters:
componentData
(mwseMCMComponent, table)class
(string): The component type to get. On of the following:"Category"
"SideBySideBlock"
"ActiveInfo"
"Hyperlink"
"Info"
"MouseOverInfo"
"ExclusionsPage"
"FilterPage"
"MouseOverPage"
"Page"
"SideBarPage"
"Button"
"DecimalSlider"
"Dropdown"
"KeyBinder"
"OnOffButton"
"ParagraphField"
"Setting"
"Slider"
"TextField"
"YesNoButton"
"Template"
label
(string): Optional. The label text to set for the new component. Not all component types have a label.indent
(integer): Default:12
. The left padding size in pixels. Only used if thechildIndent
isn't set on the parent component.childIndent
(integer): Optional. The left padding size in pixels. Used on all the child components.paddingBottom
(integer): Default:4
. The bottom border size in pixels. Only used if thechildSpacing
is unset on the parent component.childSpacing
(integer): Optional. The bottom border size in pixels. Used on all the child components.inGameOnly
(boolean): Default:false
.postCreate
(fun(self: mwseMCMComponent)): Optional. Can define a custom formatting function to make adjustments to any element saved inself.elements
.parentComponent
(mwseMCMComponent): Optional.
Returns:
component
(mwseMCMComponent)
makeComponent
⚓︎
This method creates the border and inputField UI elements of the TextField.
myObject:makeComponent(parentBlock)
Parameters:
parentBlock
(tes3uiElement)
new
⚓︎
Creates a new ParagraphField.
local paragraphField = myObject:new({ label = ..., variable = ..., numbersOnly = ..., description = ..., height = ..., sNewValue = ..., callback = ..., inGameOnly = ..., restartRequired = ..., restartRequiredMessage = ..., indent = ..., childIndent = ..., paddingBottom = ..., childSpacing = ..., postCreate = ..., class = ..., componentType = ..., parentComponent = ... })
Parameters:
data
(table): Optional.label
(string): Optional. Text shown above the text field.variable
(mwseMCMVariable, mwseMCMSettingNewVariable): Optional. Creates a variable of given class for this setting.numbersOnly
(boolean): Default:false
. If true, only numbers will be allowed in this TextField.description
(string): Optional. If in a Sidebar Page, the description will be shown on mouseover.height
(integer): Optional. Fixes the height of the paragraph field to a custom value.sNewValue
(string): Optional. The message shown after a new value is submitted. This can be formatted with a '%s' which will be replaced with the new value. The default text is a localized version of: "New value: '%s'".callback
(fun(self: mwseMCMParagraphField)): Optional. This allows overriding the default implementation of this methodinGameOnly
(boolean): Default:false
. If true, the setting is disabled while the game is on main menu.restartRequired
(boolean): Default:false
. If true, updating this Setting will notify the player to restart the game.restartRequiredMessage
(string): Optional. The message shown if restartRequired is triggered. The default text is a localized version of: "The game must be restarted before this change will come into effect."indent
(integer): Default:12
. The left padding size in pixels. Only used if thechildIndent
isn't set on the parent component.childIndent
(integer): Optional. The left padding size in pixels. Used on all the child components.paddingBottom
(integer): Default:4
. The bottom border size in pixels. Only used if thechildSpacing
is unset on the parent component.childSpacing
(integer): Optional. The bottom border size in pixels. Used on all the child components.postCreate
(fun(self: mwseMCMParagraphField)): Optional. Can define a custom formatting function to make adjustments to any element saved inself.elements
.class
(string): Optional.componentType
(string): Optional.parentComponent
(mwseMCMComponent): Optional.
Returns:
paragraphField
(mwseMCMParagraphField)
prepareData
⚓︎
Prepares the provided parameters table and sets the parentComponent
field to mwseMCMComponent
.
local data = myObject:prepareData(data)
Parameters:
data
(string, mwseMCMComponent.new.data): Optional.
Returns:
data
(mwseMCMComponent.new.data)
press
⚓︎
Calls the update
method.
myObject:press()
printComponent
⚓︎
Prints the component table to the mwse.log
. If a component is passed, it will be printed. If called without arguments, the component it was called on will be printed.
myObject:printComponent(component)
Parameters:
component
(table): Default:self
.
registerEnterKey
⚓︎
This method an event handler on tes3.uiEvent.keyEnter that calls self:update()
if the pressed key was Enter. Inserts a newline into the paragraph input if the pressed combination was Shift+Enter.
myObject:registerEnterKey(element)
Parameters:
element
(tes3uiElement)
registerMouseOverElements
⚓︎
Registers an event handler on each given UI element for the tes3.uiEvent.mouseOver
and tes3.uiEvent.mouseLeave
that will trigger "MCM:MouseOver" event. That event is used by the MCM to update the sidebar on the mwseMCMSideBarPage.
myObject:registerMouseOverElements(mouseOverList)
Parameters:
mouseOverList
(tes3uiElement[]): Optional. If this argument isn't passed, does nothing.
update
⚓︎
Updates the variable's value to the current text in the text input element. If self.numbersOnly
is true, it only allows setting the new value to a number.
myObject:update()