LoadSkin

Syntax

Skin = LoadSkin(Path$="", Flags=#Null)

Description

Loads skin definition files (typically `.css`-like files) from a specified directory path or a predefined location based on the application name and creates a skin object containing the parsed rules.

Parameters

Path$ (optional)
The path to the directory containing the skin files. If empty (""), ProGUI attempts to load from a default location:

  1. %APPDATA%\[AppName]\Skins\Default\
  2. [AppDirectory]\Skins\Default\

If a name (e.g., "MyTheme") is provided without a path, ProGUI looks in:

  1. %APPDATA%\[AppName]\Skins\MyTheme\
  2. [AppDirectory]\Skins\MyTheme\

Default is "".

Flags (optional)
Flags modifying the loading behavior. Currently unused. Default is #Null.

Return Value

Returns a handle to the newly loaded skin object if successful (i.e., if the directory exists and contains valid `.css` files). Returns #Null or #False if the path is invalid or no valid skin files are found.

Remarks

ProGUI searches the specified directory for files with a `.css` extension. Each file found is parsed for styling rules. The filename (without extension) is treated as the theme name (e.g., `dark.css` defines rules for the `dark` theme, `default.css` defines rules for the default/base theme). Rules within these files should follow a CSS-like syntax understood by ProGUI's internal parser (see SkinSetValue() for property/value examples and CSS Reference). The function automatically sets up file watching on the skin directory; if any `.css` file is modified, the skin will be reloaded automatically.

Example

IncludeFile "ProGUI_PB.pbi"

StartProGUI()

; Assume a skin named "MyCoolSkin" exists in "[AppDir]\Skins\MyCoolSkin"
; containing at least "default.css" and maybe "dark.css"

LoadedSkin = LoadSkin("MyCoolSkin") ; Look for it in default locations

If LoadedSkin
  Debug "Skin 'MyCoolSkin' loaded successfully."
  
  ; Set it as the application default skin
  SkinSetDefault(LoadedSkin)
  
  ; Optionally, activate a specific theme if it exists
  SkinSetTheme("dark")
  
  ; --- Create window and widgets ---
  MyWindow = CreateWindow(0, 0, 300, 200, "Loaded Skin")
  Layout = WindowGetLayout(MyWindow)
  LayoutSetPadding(Layout, 10)
  MyButton = CreateWidget(0, 0, 100, 30)
  WidgetSetClass(MyButton, "my-button") ; Class should match rules in the CSS
  
  WindowShow(MyWindow, #True, #PG_WindowShow_ScreenCentered)
  
  Repeat : Event = WaitWindowEvent() : Until Event = #PB_Event_CloseWindow
  
Else
  Debug "Failed to load skin 'MyCoolSkin'. Check paths and CSS files."
EndIf

StopProGUI()

See Also

CreateSkin, SaveSkin, SkinSetValue, SkinSetDefault, SkinSetTheme

Supported OS

Windows, Linux