settings.lua
---@meta Settings ---@module 'Qt' ---@module 'SimpleTypes' local settings = {} ---The base class of all aspects ---@class BaseAspect settings.BaseAspect = {} ---Applies the changes from its volatileValue to its value. function settings.BaseAspect:apply() end ---@class AspectCreate ---@field settingsKey? string The settings key of the aspect. If not set, the aspect will not be saved to the settings persistently. ---@field displayName? string The display name of the aspect. ---@field labelText? string The label text of the aspect. ---@field toolTip? string The tool tip of the aspect. ---@field enabler? BoolAspect Enable / Disable this aspect based on the state of the `enabler`. ---@field onValueChanged? function () Called when the value of the aspect changes. ---@field onVolatileValueChanged? function () Called when the volatile value of the aspect changes. ---@field macroExpander? MacroExpander|NullType The macro expander to use, or nil to disable macro expansion. local AspectCreate = {} ---The base class of most typed aspects. ---@generic T ---@class TypedAspect<T> : BaseAspect ---@field value `T` The value of the aspect. ---@field volatileValue `T` The temporary value of the aspect. ---@field defaultValue `T` The default value of the aspect. local TypedAspect = {} ---@generic T ---@class TypedAspectCreate<T> : AspectCreate ---@field defaultValue `T` The default value of the aspect. local TypedAspectCreate = {} ---A container for aspects. ---@class AspectContainer : BaseAspect settings.AspectContainer = {} ---Options for creating an AspectContainer. ---@class AspectContainerCreate ---@field autoApply? boolean Whether the aspects should be applied automatically or not. ---@field onApplied? function Called when the aspects are applied. ---@field layouter? function The layouter of the aspect container. ---@field settingsGroup? string The settings group of the aspect container. AspectContainerCreate = {} ---Create a new AspectContainer. ---@param options AspectContainerCreate ---@return AspectContainer function settings.AspectContainer.create(options) end ---A aspect containing a boolean value. ---@class BoolAspect : TypedAspect<boolean> settings.BoolAspect = {} ---@enum LabelPlacement settings.LabelPlacement = { AtCheckBox = 0, Compact = 0, InExtraLabel = 0 }; ---@class BoolAspectCreate : TypedAspectCreate<boolean> ---@field labelPlacement? LabelPlacement: BoolAspectCreate = {} ---Create a new BoolAspect. ---@param options BoolAspectCreate ---@return BoolAspect function settings.BoolAspect.create(options) end settings.ColorAspect = {} function settings.ColorAspect.create(options) end ---@class SelectionAspect : TypedAspect<int> ---@field stringValue string The string value of the aspect. ---@field dataValue any The data value of the aspect. settings.SelectionAspect = {} ---@enum SelectionDisplayStyle settings.SelectionDisplayStyle = { RadioButtons = 0, ComboBox = 0 }; ---@class SelectionOption ---@field name string The name of the option. ---@field toolTip? string The toolTip of the option. ---@field data? any The data of the option. SelectionOption = {} ---@class SelectionAspectCreate : TypedAspectCreate<int> ---@field displayStyle? SelectionDisplayStyle The display type of the aspect. ---@field options? string[]|SelectionOption[] The available options. SelectionAspectCreate = {} ---Creates a new SelectionAspect ---@param options SelectionAspectCreate ---@return SelectionAspect aspect The Aspect function settings.SelectionAspect.create(options) end function settings.SelectionAspect:addOption(option) end function settings.SelectionAspect:addOption(option, toolTip) end settings.MultiSelectionAspect = {} function settings.MultiSelectionAspect.create(options) end ---@enum StringDisplayStyle settings.StringDisplayStyle = { Label = 0, LineEdit = 0, TextEdit = 0, PasswordLineEdit = 0, }; ---@class StringAspectCreate : TypedAspectCreate<string> ---@field displayStyle? StringDisplayStyle The display type of the aspect. ---@field historyId? string The history id of the aspect. ---@field valueAcceptor? function string (oldvalue: string, newValue: string) ---@field showToolTipOnLabel? boolean ---@field displayFilter? function string (value: string) ---@field placeHolderText? string ---@field acceptRichText? boolean ---@field autoApplyOnEditingFinished? boolean ---@field elideMode? Qt.TextElideMode The elide mode of the aspect. ---@field rightSideIconPath? string Path to the icon ---@field minimumHeight? int ---@field completer QCompleter? A QCompleter object. StringAspectCreate = {} ---@class StringAspect : TypedAspect<string> settings.StringAspect = {} ---Create a new StringAspect ---@param options StringAspectCreate function settings.StringAspect.create(options) end ---@enum Kind settings.Kind = { ExistingDirectory = 0, Directory = 0, File = 0, SaveFile = 0, ExistingCommand = 0, Command = 0, Any = 0 }; ---@class FilePathAspectCreate ---@field expectedKind? Kind The kind of path we want to select. ---@field historyId? string The history id of the aspect. ---@field defaultPath? FilePath The default path of the aspect. ---@field promptDialogFilter? string ---@field promptDialogTitle? string ---@field commandVersionArguments? string[] ---@field allowPathFromDevice? boolean ---@field validatePlaceHolder? boolean ---@field openTerminalHandler? function ---@field environment? Environment ---@field baseFileName? FilePath ---@field valueAcceptor? function string (oldvalue: string, newValue: string) ---@field showToolTipOnLabel? boolean ---@field autoApplyOnEditingFinished? boolean ---@field validationFunction? function ---@field displayFilter? function string (value: string) ---@field placeHolderText? string FilePathAspectCreate = {} ---@class FilePathAspect ---@field expandedValue FilePath The expanded value of the aspect. ---@field defaultPath FilePath The default path of the aspect. settings.FilePathAspect = {} ---Create a new FilePathAspect ---@param options FilePathAspectCreate : TypedAspectCreate<string> ---@return FilePathAspect function settings.FilePathAspect.create(options) end ---Set the value of the aspect ---@param value string|FilePath The value to set. function settings.FilePathAspect:setValue(value) end settings.IntegerAspect = {} function settings.IntegerAspect.create(options) end settings.DoubleAspect = {} function settings.DoubleAspect.create(options) end settings.StringListAspect = {} function settings.StringListAspect.create(options) end settings.FilePathListAspect = {} function settings.FilePathListAspect.create(options) end settings.IntegersAspect = {} function settings.IntegersAspect.create(options) end settings.StringSelectionAspect = {} function settings.StringSelectionAspect.create(options) end ---@class OptionsPage settings.OptionsPage = {} ---@class OptionsPageCreate ---@field id string ---@field displayName string ---@field categoryId string ---@field displayCategory string ---@field categoryIconPath string|FilePath ---@field aspectContainer AspectContainer OptionsPageCreate = {} ---Creates a new OptionsPage. ---@param options OptionsPageCreate ---@return OptionsPage function settings.OptionsPage.create(options) end ---Shows options page. function settings.OptionsPage:show() end ---@class ExtensionOptionsPage settings.extensionOptionsPage = {} ---Create an ExtensionOptionsPage. ---@param aspectContainer AspectContainer ---@return ExtensionOptionsPage function settings.extensionOptionsPage.create(aspectContainer) end ---Show the options page. function settings.extensionOptionsPage:show() end return settings