Lua : LuaRT

Par lcirpaci, 21 mars, 2025
Lua

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 :

  1. 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

  2. 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

GIF du résultat

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

  1. Fenêtre principale (win)

    • Création d'une fenêtre de 500x350 pixels avec un fond gris clair.
  2. Titre (title)

    • Un label affichant "📝 Ma To-Do List" en haut de la fenêtre.
    • Police de taille 18, en gras.
  3. 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.
  4. 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.
  5. 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.

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, ou ui.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

Étiquettes

Commentaires