101 lines
3.5 KiB
Plaintext
101 lines
3.5 KiB
Plaintext
|
global record ApiVersion
|
||
|
kind: Kind
|
||
|
major: integer
|
||
|
minor: integer
|
||
|
|
||
|
enum Kind
|
||
|
"theme"
|
||
|
"compiler_hint"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local record env
|
||
|
record C_Debug
|
||
|
-- print message to console, with Qt-style string format
|
||
|
debug: function (format: string, ...: any): nil
|
||
|
|
||
|
-- show message box, with Qt-style string format
|
||
|
messageBox: function (format: string, ...: any): nil
|
||
|
end
|
||
|
|
||
|
record C_Desktop
|
||
|
-- return desktoop environment name
|
||
|
desktopEnvironment: function (): DesktopEnvironment
|
||
|
|
||
|
-- return language code, e.g. "en_US", "zh_CN"
|
||
|
language: function (): string
|
||
|
|
||
|
-- return available Qt styles, e.g. {"breeze", "fusion", "windows"}
|
||
|
qtStyleList: function (): {string}
|
||
|
|
||
|
-- return system app mode, light or dark
|
||
|
systemAppMode: function (): AppMode
|
||
|
|
||
|
-- return default Qt style, e.g. "fusion"
|
||
|
systemStyle: function (): string
|
||
|
|
||
|
enum DesktopEnvironment
|
||
|
"windows" -- Windows Win32
|
||
|
"macos" -- macOS
|
||
|
"xdg" -- XDG-compliant desktop environment (e.g. GNOME, KDE Plasma)
|
||
|
"unknown" -- other desktops or non-desktop environments (e.g. Windows UWP, Android)
|
||
|
end
|
||
|
|
||
|
enum AppMode
|
||
|
"light"
|
||
|
"dark"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
record C_FileSystem
|
||
|
-- return whether the path exists
|
||
|
exists: function (path: string): boolean
|
||
|
|
||
|
-- return whether the path is executable
|
||
|
isExecutable: function (path: string): boolean
|
||
|
end
|
||
|
|
||
|
record C_System
|
||
|
-- returns the architecture of Red Panda C++, name following `QSysInfo`
|
||
|
-- e.g. "i386", "x86_64", "arm", "arm64", "riscv64", "loongarch64"
|
||
|
-- though unsupported, MSVC arm64ec is handled correctly (returns "arm64ec")
|
||
|
appArch: function (): string
|
||
|
|
||
|
-- returns the directory of Red Panda C++
|
||
|
-- e.g. "/usr/bin", "C:/Program Files/RedPanda-Cpp", "C:/Users/中文/AppData/Local/RedPanda-CPP"
|
||
|
appDir: function (): string
|
||
|
|
||
|
-- returns the libexec directory of Red Panda C++
|
||
|
-- e.g. "/usr/libexec/RedPandaCPP", "C:/Program Files/RedPanda-Cpp"
|
||
|
appLibexecDir: function (): string
|
||
|
|
||
|
-- returns the resource directory of Red Panda C++
|
||
|
-- e.g. "/usr/share/RedPandaCPP", "C:/Program Files/RedPanda-Cpp"
|
||
|
appResourceDir: function (): string
|
||
|
|
||
|
-- returns the architecture of the OS, name following `QSysInfo`
|
||
|
-- e.g. "i386", "x86_64", "arm", "arm64"
|
||
|
-- Windows arm64 is handled correctly even if Red Panda C++ runs under emulation
|
||
|
osArch: function (): string
|
||
|
|
||
|
-- returns supported application architectures by OS, name following `QSysInfo`
|
||
|
-- e.g. {"i386", "x86_64", "arm64"}
|
||
|
-- Windows 10 1709 or later: accurate result
|
||
|
-- Legacy Windows: hardcoded result, i.e. "i386" is always included even though WoW64 is not available
|
||
|
-- macOS: accurate result supposed, but not tested
|
||
|
-- Linux: osArch + appArch + QEMU user mode emulation, no multilib detection
|
||
|
-- other (BSD): osArch + appArch, no multilib detection
|
||
|
supportedAppArchList: function (): {string}
|
||
|
|
||
|
-- read `subKey\name` from HKEY_CURRENT_USER and HKEY_LOCAL_MACHINE in order (Windows only)
|
||
|
readRegistry: function (subKey: string, name: string): string | nil
|
||
|
end
|
||
|
|
||
|
record C_Util
|
||
|
-- Qt-style string format, replace %1, %2, etc. with arguments
|
||
|
format: function (format: string, ...: any): string
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return env
|