tuto: Redéfinition des tailles des widgets écran (system.registerLayout)
2 participants
Page 1 sur 1
tuto: Redéfinition des tailles des widgets écran (system.registerLayout)
Depuis quelques versions, nous avons la possibilité de modifier par un script LUA le nombre et la taille des widgets de l’écran.
Ceci grâce à la fonction system.registerLayout
Frsky fournit un exemple dans le GitHub ici :
https://github.com/FrSkyRC/ETHOS-Feedback-Community/tree/1.5/lua/examples/layout
Le nombre de widgets est limité à 12, ce qui est pas mal déjà vu la taille de l’écran.
Personnellement, j’étais en train d’écrire des scripts LUA pour regrouper dans un widget 2 chronos, ou bien 2 jauges, dans le même widget pour gagner de la place.
Ce développement m’a permis de découvrir les scripts LUA mais perd de son intérêt maintenant que je peux augmenter le nombre de widgets.
Je me suis donc intéressé à cette fonction system.registerLayout et j’en fournis ici un exemple un peu plus développé que celui fourni par FRSKY.
J’ai un peu galéré au début et même si j’utilise le simulateur pour tester les scripts « en live », c’était un peu fastidieux et pas très pratique de voir au pixel prêt.
Je me suis donc amusé à faire une feuille Excell avec des macros VBA pour aider au « dessin » de ces widgets, et d’en définir les tailles et même de générer le corps du script.
Je mets tout ça ici si ça peut intéresser quelqu’un d’autre.
Il faut saisir les coordonnées et les tailles des widgets et en cliquant sur des boutons, ceux-ci apparaissent pour en voir le rendu.
On peut ainsi dessiner 12 widgets, les supprimer un par un pour les déplacer avec d'autres valeurs.
On peut faire afficher, ou pas, un fond d'écran venant de la radio X20S.
On peut également dessiner la trame du plein écran 800 * 480
Ou bien la partie centrale de l'écran (pour garder la ligne de titre en haut et la ligne du bas avec les icones) en 800 * 340
Ou bien la partie étendue qui vient empiéter sur la ligne sous le titre en 800 * 372
la partie droite contient des aides à la compréhension des origines et déplacements.
Ne serait ce que pour s'habituer à des coordonnées qui commencent à 0 et non pas 1.
C'est à dire que un widget de 60 par 100 positionné en 0,0 va de 0 à 59 et de 0 à 99 et non pas de 1 à 60 et de 1 à 100)
Voici le rendu final qui a généré l'exemple ci-dessus:
Voici les sources.
Le zip contient le dossier LUA prêt à être installer avec cet exemple.
Le zip contient également les screens d'exemple en jpg.
Le ZIP contient la feuille excell avec macro que vous pouvez valider sans crainte.
N'hésitez pas à me dire ce qui n'irait pas ou ce qui pourrait être amélioré.
Bon vol.
Ceci grâce à la fonction system.registerLayout
Frsky fournit un exemple dans le GitHub ici :
https://github.com/FrSkyRC/ETHOS-Feedback-Community/tree/1.5/lua/examples/layout
Le nombre de widgets est limité à 12, ce qui est pas mal déjà vu la taille de l’écran.
Personnellement, j’étais en train d’écrire des scripts LUA pour regrouper dans un widget 2 chronos, ou bien 2 jauges, dans le même widget pour gagner de la place.
Ce développement m’a permis de découvrir les scripts LUA mais perd de son intérêt maintenant que je peux augmenter le nombre de widgets.
Je me suis donc intéressé à cette fonction system.registerLayout et j’en fournis ici un exemple un peu plus développé que celui fourni par FRSKY.
J’ai un peu galéré au début et même si j’utilise le simulateur pour tester les scripts « en live », c’était un peu fastidieux et pas très pratique de voir au pixel prêt.
Je me suis donc amusé à faire une feuille Excell avec des macros VBA pour aider au « dessin » de ces widgets, et d’en définir les tailles et même de générer le corps du script.
Je mets tout ça ici si ça peut intéresser quelqu’un d’autre.
Il faut saisir les coordonnées et les tailles des widgets et en cliquant sur des boutons, ceux-ci apparaissent pour en voir le rendu.
On peut ainsi dessiner 12 widgets, les supprimer un par un pour les déplacer avec d'autres valeurs.
On peut faire afficher, ou pas, un fond d'écran venant de la radio X20S.
On peut également dessiner la trame du plein écran 800 * 480
Ou bien la partie centrale de l'écran (pour garder la ligne de titre en haut et la ligne du bas avec les icones) en 800 * 340
Ou bien la partie étendue qui vient empiéter sur la ligne sous le titre en 800 * 372
la partie droite contient des aides à la compréhension des origines et déplacements.
Ne serait ce que pour s'habituer à des coordonnées qui commencent à 0 et non pas 1.
C'est à dire que un widget de 60 par 100 positionné en 0,0 va de 0 à 59 et de 0 à 99 et non pas de 1 à 60 et de 1 à 100)
Voici le rendu final qui a généré l'exemple ci-dessus:
Voici les sources.
Le zip contient le dossier LUA prêt à être installer avec cet exemple.
Le zip contient également les screens d'exemple en jpg.
Le ZIP contient la feuille excell avec macro que vous pouvez valider sans crainte.
N'hésitez pas à me dire ce qui n'irait pas ou ce qui pourrait être amélioré.
Bon vol.
- Fichiers joints
philandroid- Messages : 250
Date d'inscription : 14/06/2021
Age : 62
Localisation : châteauroux
Re: tuto: Redéfinition des tailles des widgets écran (system.registerLayout)
Bonjour,
Super ce que tu as fait, tès complet, très clair.
Est ce compatible avec openTX, j'ai la dernière version 2315 sur un Horus x10 et un Radiomaster TX 16S?
Super ce que tu as fait, tès complet, très clair.
Est ce compatible avec openTX, j'ai la dernière version 2315 sur un Horus x10 et un Radiomaster TX 16S?
diiity- Messages : 1964
Date d'inscription : 21/04/2015
Age : 71
Localisation : beauvais
Re: tuto: Redéfinition des tailles des widgets écran (system.registerLayout)
Merci. Pour openTx, je ne connais pas du tout. Désolé.
philandroid- Messages : 250
Date d'inscription : 14/06/2021
Age : 62
Localisation : châteauroux
Re: tuto: Redéfinition des tailles des widgets écran (system.registerLayout)
comment utilises tu ce lua, dans quel dossier le places tu?
diiity- Messages : 1964
Date d'inscription : 21/04/2015
Age : 71
Localisation : beauvais
Re: tuto: Redéfinition des tailles des widgets écran (system.registerLayout)
Comme les autres lua.
Il faut créer un dossier (peu importe le nom mais il faut mieux mettre un nom en rapport avec le script. Comme je l'ai fait ici ) dans le dossier scripts.
Et mettre dans ce dossier le fichier main.lua
(Ne pas encombrer la radio avec les jpg et la feuille excell)
Ensuite sur la radio, dans la "configuration des écrans" puis "changer la disposition", cette nouvelle frame apparaitra en dernier dans celles proposées.
Lorsque le dossier ne contient que un script, il est possible de le mettre directementdans ledossier scripts mais dans ce cas avec un autre nom que "main.lua". Mais je préfere ranger les choses
Il faut créer un dossier (peu importe le nom mais il faut mieux mettre un nom en rapport avec le script. Comme je l'ai fait ici ) dans le dossier scripts.
Et mettre dans ce dossier le fichier main.lua
(Ne pas encombrer la radio avec les jpg et la feuille excell)
Ensuite sur la radio, dans la "configuration des écrans" puis "changer la disposition", cette nouvelle frame apparaitra en dernier dans celles proposées.
Lorsque le dossier ne contient que un script, il est possible de le mettre directementdans ledossier scripts mais dans ce cas avec un autre nom que "main.lua". Mais je préfere ranger les choses
philandroid- Messages : 250
Date d'inscription : 14/06/2021
Age : 62
Localisation : châteauroux
Re: tuto: Redéfinition des tailles des widgets écran (system.registerLayout)
Je t'ai demandé cela car avec openTX c'est un peu différent.
Merci
Merci
diiity- Messages : 1964
Date d'inscription : 21/04/2015
Age : 71
Localisation : beauvais
Re: tuto: Redéfinition des tailles des widgets écran (system.registerLayout)
Voici le script pour 4 lignes et 3 colonnes.
Remarque: si vous jouez avec ces frames, testez bien que les widgets que vous allez mettre dedans ont assez de place;)
-- Lua Layout example
local function init()
system.registerLayout({key="3L4C", widgets={
{x=0,y=90,w=261,h=79} ,
{x=0,y=176,w=262,h=79} ,
{x=0,y=262,w=261,h=79} ,
{x=0,y=348,w=261,h=79} ,
{x=268,y=90,w=262,h=79} ,
{x=268,y=176,w=261,h=79} ,
{x=268,y=262,w=261,h=79} ,
{x=268,y=348,w=262,h=79} ,
{x=537,y=90,w=262,h=79} ,
{x=537,y=176,w=262,h=79} ,
{x=537,y=262,w=262,h=79} ,
{x=537,y=348,w=262,h=79}
}})
end
return {init=init}
Remarque: si vous jouez avec ces frames, testez bien que les widgets que vous allez mettre dedans ont assez de place;)
-- Lua Layout example
local function init()
system.registerLayout({key="3L4C", widgets={
{x=0,y=90,w=261,h=79} ,
{x=0,y=176,w=262,h=79} ,
{x=0,y=262,w=261,h=79} ,
{x=0,y=348,w=261,h=79} ,
{x=268,y=90,w=262,h=79} ,
{x=268,y=176,w=261,h=79} ,
{x=268,y=262,w=261,h=79} ,
{x=268,y=348,w=262,h=79} ,
{x=537,y=90,w=262,h=79} ,
{x=537,y=176,w=262,h=79} ,
{x=537,y=262,w=262,h=79} ,
{x=537,y=348,w=262,h=79}
}})
end
return {init=init}
philandroid- Messages : 250
Date d'inscription : 14/06/2021
Age : 62
Localisation : châteauroux
Sujets similaires
» Ecran d'accueil et widgets
» [Tuto] Comment afficher les infos sur l'écran de l'Horus
» Conception de widgets: taille des widgets selon la grille d’affichage
» [MINI TUTO facile] HELP La radio affiche un écran bleu et vibre.
» Fichiers son system
» [Tuto] Comment afficher les infos sur l'écran de l'Horus
» Conception de widgets: taille des widgets selon la grille d’affichage
» [MINI TUTO facile] HELP La radio affiche un écran bleu et vibre.
» Fichiers son system
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum