Aller au contenu

Interface déclarative

Votre mod ne dessine pas son interface : il la décrit sous forme d’un arbre de composants. NeoPiano la construit avec ses propres composants et son thème. Résultat : votre interface a exactement l’allure de NeoPiano, s’adapte à sa langue et à son style, et reste accessible.

Capacité requise : ui.panel.

neo.ui.panel({
id = "main",
title = "Chord Coach",
icon = "piano", -- une icône Material Symbols
content = { type = "column", children = {
{ type = "section", title = "Affichage", children = {
{ type = "toggle", id = "show_hud", label = "Afficher le HUD", value = true },
{ type = "slider", id = "size", label = "Taille", min = 1, max = 3, value = 2 },
} },
{ type = "separator" },
{ type = "label", id = "count", text = "0 accord" },
{ type = "button", id = "reset", text = "Remettre à zéro" },
} },
})

Capacité requise : ui.hud. Un HUD s’ancre à un coin de l’écran.

neo.ui.hud({ type = "label", id = "chord", text = "–" }, "top_right")

Capacité requise : ui.toast.

neo.ui.toast("Progression enregistrée", "success") -- "info", "success" ou "warning"

neo.ui.set change une propriété d’un composant existant : texte, valeur, visibilité, état activé.

neo.ui.set("count", "text", total .. " accords")
neo.ui.set("reset", "enabled", total > 0)

neo.ui.remove(id) retire un panneau ou un HUD.

Chaque interaction appelle le callback on_ui avec l’identifiant du composant, l’événement et la nouvelle valeur :

function on_ui(id, event, value)
if id == "show_hud" and event == "change" then
neo.ui.set("chord", "visible", value)
elseif id == "reset" and event == "click" then
total = 0
neo.ui.set("count", "text", "0 accord")
end
end

La liste complète, avec leurs propriétés, est dans la référence des composants.

Disponibles API 2 Prévus Prochainement
column, row, section, label, icon, button, toggle, slider, dropdown, color_picker, progress, separator stepper, segmented, text_input, note_picker, mini_keyboard, meter, bar_chart, list, image

Documentation synchronisée avec NeoPiano · commit cbf48cc · 17 octobre 2026