64 lines
1.3 KiB
QML
64 lines
1.3 KiB
QML
// FetchPresets.qml
|
|
pragma Singleton
|
|
|
|
import QtQuick
|
|
import Quickshell
|
|
import Quickshell.Io
|
|
|
|
Singleton {
|
|
id: root
|
|
|
|
property var parsedPresets: ({})
|
|
readonly property var presets: parsedPresets
|
|
property bool ready: false
|
|
|
|
function accents(presetName, variantName) {
|
|
const variant = parsedPresets[presetName]?.variants?.[variantName];
|
|
|
|
return variant?.accents ?? [];
|
|
}
|
|
|
|
function defaultAccent(presetName, variantName) {
|
|
const variant = parsedPresets[presetName]?.variants?.[variantName];
|
|
|
|
return variant?.default_accent ?? "";
|
|
}
|
|
|
|
function modes(presetName, variantName) {
|
|
const variant = parsedPresets[presetName]?.variants?.[variantName];
|
|
|
|
return variant?.modes ?? [];
|
|
}
|
|
|
|
function presetNames() {
|
|
return Object.keys(parsedPresets);
|
|
}
|
|
|
|
function variantNames(presetName) {
|
|
const preset = parsedPresets[presetName];
|
|
|
|
if (!preset || !preset.variants)
|
|
return [];
|
|
|
|
return Object.keys(preset.variants);
|
|
}
|
|
|
|
Process {
|
|
command: ["zshell-cli", "scheme", "list-presets", "--json"]
|
|
running: true
|
|
|
|
stdout: StdioCollector {
|
|
onStreamFinished: {
|
|
try {
|
|
const parsed = JSON.parse(text);
|
|
|
|
root.parsedPresets = parsed.presets ?? {};
|
|
root.ready = true;
|
|
} catch (e) {
|
|
console.error("Failed to parse presets JSON:", e);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|