LuaRT : un framework d'applicaiton Native
luaRT est une bibliothèque légère mais puissante qui permet de créer des interfaces graphiques (GUI) en Lua. Lua étant un langage de programmation léger et rapide, luaRT permet aux développeurs d’ajouter facilement des interfaces graphiques modernes à leurs applications Lua. Ce projet est idéal pour ceux qui cherchent une solution simple et efficace pour créer des applications avec une interface graphique sans avoir à plonger trop profondément dans des bibliothèques complexes.
Introduction à luaRT
luaRT est une bibliothèque graphique open-source permettant de créer des applications bureautiques en Lua. Contrairement à des frameworks plus complexes comme Qt ou GTK, luaRT se concentre sur la simplicité et l'intégration directe avec le langage Lua. Il permet de créer des fenêtres, des boutons, des champs de texte, des menus, et bien plus encore, tout en conservant une grande légèreté.
luaRT est particulièrement adapté pour les développeurs Lua qui souhaitent ajouter une interface graphique sans dépendre d’une grande bibliothèque externe.
Fonctionnalités principales
luaRT offre un ensemble de fonctionnalités puissantes qui permettent de construire des applications modernes :
- Fenêtres personnalisées : Créez facilement des fenêtres avec un contrôle total sur la taille, la couleur, et le contenu.
- Composants graphiques : Inclut des éléments comme des boutons, des labels, des champs de texte, des listes, des menus et bien plus.
- Gestion des événements : Permet de réagir aux interactions utilisateur comme les clics de souris, les frappes clavier et d’autres événements système.
- Thèmes personnalisables : Modifiez les thèmes de votre application pour créer des interfaces sombres ou claires selon vos préférences.
- Mise à jour en temps réel : Grâce à la boucle d’événements, les éléments de l'interface graphique sont mis à jour automatiquement.
- Simplicité d’utilisation : Grâce à sa syntaxe simple, luaRT est facile à apprendre et à utiliser pour les développeurs Lua de tous niveaux.
- Documentation des modules disponible
Installation de luaRT
Pour installer luaRT, vous devez d'abord disposer de Lua sur votre système. Voici les étapes générales pour installer luaRT :
-
Télécharger Lua : Si vous n'avez pas encore installé Lua 5.1 et installer et dans le PATH Windows ou
sudo apt update && sudo apt upgrade -y && sudo apt install lua5.1 -y
si vous êtes sur linux -
Télécharger luaRT : Rendez-vous sur le dépôt GitHub de luaRT pour télécharger la dernière version stable de la bibliothèque.
Constructeur graphique
Lorsque vous télécharger LuaRT, vous avez un logiciel RTBuilder
qui vous permet de construire vos interface graphique par drag and drop comme sur javaFx. Parcontre, vous ne pouvez pas implémenter directement dans RTBuilder les comportements des composents. ces pratique pour faire de simple interface avec les assets de notre choix.
Démonstration d'une app Todolist
local ui = require "ui"
local win, title, list, entry, add_btn, remove_btn, inc_btn, dec_btn, theme_btn, theme_btn
win = ui.Window("To-Do List", 500, 350)
win.background = {240, 240, 240}
title = ui.Label(win, "📝 Ma To-Do List", 20, 10, 300, 30)
title.fontsize = 18
title.bold = true
list = ui.List(win, {}, 20, 50, 300, 200)
entry = ui.Edit(win, "", 20, 270, 300, 30)
add_btn = ui.Button(win, "Ajouter", 340, 270, 120, 30)
remove_btn = ui.Button(win, "Supprimer", 340, 230, 120, 30)
inc_btn = ui.Button(win, "Monter", 340, 100, 120, 30)
dec_btn = ui.Button(win, "Descendre", 340, 140, 120, 30)
theme_btn = ui.Button(win, "Changer de thème", 340, 180, 120, 30)
function theme_btn:onClick()
ui.theme = ui.theme== "dark" and "light" or "dark"
theme_btn.text = ui.theme== "dark" and "Thème Claire" or "Thème Sombre"
end
function add_btn:onClick()
if entry.text ~= "" then
list:add(entry.text)
entry.text = ""
else
ui.error("Il faut saisir quelque chose à rajotuer dans la liste. ces le principe d'une todolist","Erreur humaine")
end
end
function remove_btn:onClick()
local item = list.selected
if item then
list:remove(item.index-1)
else
ui.warn("il manque un élément à sélectioner","!")
end
end
function inc_btn:onClick()
local item = list.selected or false
if item and item.index > 1 then
item.index = item.index - 1
else
ui.warn("il manque un élément à sélectioner","!")
end
end
function dec_btn:onClick()
local item = list.selected or false
if item and item.index < list.count then
item.index = item.index + 1
else
ui.warn("il manque un élément à sélectioner","!")
end
end
win:show()
repeat ui.update() until not win.visible
Description du Code : To-Do List en Lua avec Interface Graphique
Ce code est un exemple d'application de liste de tâches (To-Do List) écrite en Lua, utilisant une bibliothèque d'interface graphique (UI). L'application permet à l'utilisateur de gérer une liste de tâches, d'ajouter, supprimer, déplacer et changer le thème de l'interface.
Composants de l'Interface
-
Fenêtre principale (
win
)- Création d'une fenêtre de 500x350 pixels avec un fond gris clair.
-
Titre (
title
)- Un label affichant "📝 Ma To-Do List" en haut de la fenêtre.
- Police de taille 18, en gras.
-
Liste des tâches (
list
)- Une liste vide où les tâches seront ajoutées.
- Positionnée sous le titre avec une taille de 300x200 pixels.
-
Champ de saisie (
entry
)- Un champ de texte où l'utilisateur peut entrer une nouvelle tâche.
- Positionné sous la liste, avec une taille de 300x30 pixels.
-
Boutons
-
Ajouter (
add_btn
) : Permet d'ajouter une nouvelle tâche à la liste. -
Supprimer (
remove_btn
) : Permet de supprimer la tâche sélectionnée de la liste. -
Monter (
inc_btn
) : Permet de déplacer la tâche sélectionnée vers le haut dans la liste. -
Descendre (
dec_btn
) : Permet de déplacer la tâche sélectionnée vers le bas dans la liste. -
Changer de thème (
theme_btn
) : Permet de basculer entre un thème sombre et clair pour l'interface.
-
Ajouter (
Fonctionnalités
1. Changement de thème
- Lorsqu'on clique sur le bouton "Changer de thème", le thème alterne entre "dark" (sombre) et "light" (clair). Le texte du bouton change en conséquence ("Thème Claire" ou "Thème Sombre").
2. Ajout d'une tâche
- Lorsqu'on clique sur le bouton "Ajouter", la tâche entrée dans le champ de texte est ajoutée à la liste si le champ n'est pas vide.
- Si le champ est vide, un message d'erreur s'affiche pour informer l'utilisateur qu'il doit entrer une tâche.
3. Suppression d'une tâche
- Lorsqu'on clique sur le bouton "Supprimer", l'élément sélectionné dans la liste est supprimé. Si aucun élément n'est sélectionné, un avertissement est affiché.
4. Déplacement d'une tâche (Monter / Descendre)
- Monter : Permet de déplacer l'élément sélectionné vers le haut dans la liste si possible.
- Descendre : Permet de déplacer l'élément sélectionné vers le bas dans la liste si possible.
- Si aucun élément n'est sélectionné ou si l'élément ne peut pas être déplacé, un avertissement est affiché.
5. Gestion des erreurs
- Des messages d'erreur ou d'avertissement sont affichés si l'utilisateur tente d'effectuer une action invalide (comme ne pas sélectionner d'élément ou tenter de déplacer un élément en dehors de la liste).
Exécution du Programme
À la fin du script, la fenêtre est affichée avec la méthode win:show()
, et l'interface est mise à jour en boucle avec ui.update()
jusqu'à ce que la fenêtre soit fermée par l'utilisateur.
Conclusion
-
ui
est la bibliothèque de base pour l'interface graphique. Elle permet de créer et de manipuler des fenêtres et des widgets (composants comme les boutons, champs de texte, etc.). - Les éléments graphiques sont créés en instanciant des objets spécifiques à la bibliothèque, tels que
ui.Window
pour une fenêtre,ui.Label
pour un texte statique, ouui.Button
pour des boutons cliquables. - Chaque élément créé peut être personnalisé en modifiant ses propriétés, comme la couleur de fond, la taille du texte, ou sa position à l'écran.
- Le programme fonctionne dans une boucle où la fonction
ui.update()
est appelée en permanence pour actualiser l'interface graphique, jusqu'à ce que la fenêtre soit fermée par l'utilisateur.
Ainsi, la bibliothèque offre une approche simple et directe pour construire des interfaces graphiques dans des applications Lua.
Références
- Samir Tine, « Luart », Luart.org, https://luart.org/index.html#section_features
- Inconnu, « Community Luart », Luart.org, https://community.luart.org/
- Samir Tine, « Luart », Luart.org, https://www.luart.org/doc/modules.html
Commentaires