Page 1 of 2

Sortie du GUI Toolkit NF v1.0a pour TI Nspire & PC

Unread postPosted: 27 Jan 2022, 17:40
by SlyVTT
Après de longs mois de dur labeur, nous sommes fiers et heureux de vous annoncer la sortie ce jour du GUI Toolkit NF pour TI Nspire CX/CX II (CAS) et PC en version 1.0Alpha.
15135 15136


Le GUI Tool...Quoi ?!? GUI Toolkit NF ?!? Mais kézako ?!?

Et bien, c'est simple : il s'agit d'une bibliothèque de classes C++ permettant de développer très rapidement des applications graphiques sur Nspire (avec Ndless) et sur PC en utilisant des contrôles graphiques (Widgets), tels que des boutons, des listes déroulantes, des cases à cocher, des menus, etc.
Soit en gros, être capable d'avoir ça en un minimum de temps fonctionnant à la fois sur une TI Nspire ou sur un PC, juste en recompilant le programme et sans intervenir dans le code, la librairie se chargeant de gérer la création de l'exécutable dédié à la plateforme ciblée à la compilation :

15138 15143


Les TI Nspire CX/CX II sont de formidables machines, mais force est de constater qu'elles souffrent d'une grosse limitation concernant les langages de programmation Basic/Python. En effet, les fonctions de création d'interfaces homme-machine sont totalement absentes et il donc est particulièrement laborieux de créer des outils avec une belle interface de manière rapide.

Partant de ce constat, le projet GUI Toolkit a été initié en Février 2021 et visait à créer une bibliothèque (from scratch) permettant de combler ce manque pour des programmes écrits en C/C++ avec Ndless.

Le cahier des charges initial était alors relativement simple :
  • Offrir au programmeur une collection de contrôles graphiques lui permettant de coder rapidement des logiciels graphiques
  • Etre le plus simple possible à utiliser, via des appels à des fonctions au nom évocateur (In english of course, pour ne pas être trop limitatif)
  • Etre écrite en C/C++ sur la base de la toolchain Ndless pour offrir une ouverture du projet et une bonne rapidité d'exécution.

Une première version prototype a été écrite durant les premiers mois du printemps 2021, mais souffrait elle aussi de quelques limites fonctionnelles, notamment du fait de l'impossibilité de débugguer facilement les programmes destinés aux Nspire CX-II (pas d'émulation type Firebird disponible pour la Nspire CX II).


Une réflexion a donc conduit à la refonte du projet pour devenir le projet GUI Toolkit NF, NF signifiant "New Foundation" (Nouvelle Fondation pour les non-anglophones), offrant en prime la possibilité de faire tourner les applications destinées à la TI Nspire (et écrites avec le Toolkit bien évidemment) sur PC par une simple re-compilation (pas ré-écriture, c'est important) du code. Les bibliothèques du GUI Toolkit NF se chargeant de faire la traduction au niveau du matériel de manière totalement transparente pour l'utilisateur (le programmeur).

Ainsi, il devient très aisé de créer un programme et de le debugguer efficacement sur un PC avec les outils classiques (GCC/GDB/SDL/Valgrind ...), puis une fois fonctionnel et validé, de recompiler le programme pour une Nspire sans changer une seule ligne de code.

Un petit exemple de programme démo réalisé avec le GUI Toolkit NF, ne faisant certes rien d'utile, mais illustrant les possibilités du Toolkit et fonctionnant sur PC fait l'objet d'une courte vidéo ici :


Mais quel contenu offre le Toolkit ? Et que peut-on faire avec ?

Le toolkit offre un ensemble de classes C++ (donc nécessitant Ndless fonctionnel sur Nspire, attention donc au Firmware installé sur la machine) permettant de coder des applications graphiques. Du point de vue de l'utilisateur, il s'agit de divers Widgets dont un certain nombre sont visibles dans les screenshots suivants et permettant d'interagir avec le programme :

15139 Image Image 15138

  • Boutons et cases à cocher :
      [o] Boutons textuel
      [o] Bouton avec icone
      [o] Case à cocher
      [o] Bouton Radio
      [o] Bouton "Slider"
      [o] ...
  • Entrée d'informations :
      [o] InputBox pour entrée de valeurs/text
      [o] Multiline Text Box pour entrée d'un texte long
      [o] Multiline Rich Text Box pour entrée d'un texte long avec mise en forme
      [o] ...
  • Menus :
      [o] Barre de menus avec possibilité de faire des sous-menus
      [o] Barre d'icones
      [o] ...
  • Fenêtres et dialogbox :
      [o] Fenêtres redimensionnables/déplaçables
      [o] DialogBox non redimensionnables
      [o] FileDialogBox pour selectionner/naviguer dans les fichiers/répertoires
      [o] ...
  • Contexte graphique :
      [o] visualisation d'images
      [o] dessins et rendu de primitives graphiques
      [o] SplashScreen pour le début d'un programme
      [o] ...
  • ... et bien plus encore ...

Les applications peuvent contenir de multiples bureaux (correspondant chacun à un écran) et pouvant être facilement "switchés", il devient alors possible d'avoir des programmes avec de multiples fenêtres affichées simultanément soit sur le même bureau ou si cela est plus simple visuellement, d'avoir une fenêtre par bureau et de changer de bureau pour commuter l'affichage. Chaque bureau pouvant avoir son propre fond d'écran.

Le positionnement des Widgets dans une fenêtre par exemple ainsi que leur taille pouvant être statique, c'est à dire définis par le programmeur au départ et immuables, ou bien au contraire gérés dynamiquement par le Toolkit moyennant quelques contraintes (répartition homogène de l'espace ou taille imposée) afin de correctement se repositionner lors du redimensionnement de la dite fenêtre.

Mais le rôle du Toolkit ne s'arrête pas là, et du point de vue du Toolkit, beaucoup de choses supplémentaires sont intégrées. En effet le Toolkit embarque un certain nombre de fonctionnalités supplémentaires, dont certaines ont fait l'objet d'un Fork indépendant appelé lib nSpireLTE pour aider à programmer sur Nspire toute sorte d'applications.

Ces fonctionnalités supplémentaires sont constituées d'un ensemble de classes permettant de gérer le niveau d'abstraction matérielle pour permettre de fonctionner à la fois sur PC et sur Nspire sans avoir besoin de recoder quoi que ce soit :
  • KeyManager : contenant les fonctions de bas niveau permettant de lire l’état du clavier de la TI Nspire et/ou du PC (avec gestion de l'état des touches pressée ou non à un instant "t", venant d'être appuyée ou venant d'être relâchée )
  • MouseManager : contenant les fonctions de bas niveau permettant de lire l’état du touchpad de la TI Nspire (mouvement du curseur, click central et gestion des flèches) ou de la souris sur PC
  • TimeManager : permettant de gérer les fonctions liées au temps sur la Nspire (timer, sleep, heure actuelle)
  • Debugger : permettant de debugger des programmes en offrant un panel de fonctions pour réaliser des sorties de logs dans un fichier et tracker impitoyablement les bugs et plantages.

Ainsi qu'un "ramasse miettes" (ou GarbageCollector) permettant de contrôler l'absence de fuite de mémoire au niveau des Widgets gérés par le Toolkit. Cet élément étant totalement transparent, sans intervention de l'utilisateur, chaque Widget se déclare de manière autonome lors de sa création afin d'être effacé proprement à la fin du programme.

Mais il ne faut pas non plus oublier d'autres petits trucs sympas:
  • FontEngine : permettant de faire le rendu de polices de caractères (avec 6 polices intégrées et la possibilité d'avoir des polices utilisateurs supplémentaires)
    Image
  • ColorEngine : Permettant la gestion des couleurs des Widgets
  • ThemeEngine : Permettant d'avoir un thème graphique pour une application donnée (Fontes de caractères et couleurs de Widgets)
    Image Image Image

Toute la mécanique étant gérée par une "super classe" (appelée WidgetApplication) et permettant de faire office de chef d'orchestre et de gérer les divers événements (clicks sur les Widgets, mouvements de fenêtre, appuis des touches, ...).

Il devient alors très simple de récupérer l'information de réalisation d'un événement (par exemple savoir si on a cliqué sur un bouton, ou si une CheckBox est cochée) et d'ajuster le comportement du programme en conséquence.


Comme vous l'aurez compris, il est malheureusement compliqué de ne rien oublier, s'agissant d'un gros projet, qui plus est dont le développement n'est pas clos. Beaucoup de nouvelles fonctionnalités et de nouveaux Widgets seront notamment à développer, à ajuster et/ou à ajouter au fil du temps dans de futures révisions, nous ne pouvons donc qu'effleurer la surface des possibilités offertes à travers cette news de sortie ...


Mais ce n'est que partie remise, puisqu'il est prévu de créer un fil spécifique sous forme de mini-tutoriels (avec pourquoi pas des vidéos didactiques) permettant d'illustrer la réalisation d'applications avec le GUI Toolkit NF.

La version courante du GUI Toolkit NF fait très régulièrement l'objet de "commits" sur GitHub ici : GitHub GUI Toolkit NF.

La phase de développement du Toolkit étant désormais suffisamment avancée, une plus grosse quantité d'énergie pourra être consacrée à sa mise en pratique pour coder des applications pour Nspire ...
La documentation détaillée est aussi en cours de réactualisation de manière à bien refléter l'avancement de la version NF. Il s'agit là encore d'un gros chantier qui va avancer dans les semaines à venir, un tel projet n'étant pas très utile sans une bonne documentation sur laquelle se baser pour coder des applications.

Alors surtout n'hésitez pas à faire remonter vos idées, vos bugs, vos tests via TI Planet ou via GitHub.

So stay tuned ... More to come (very) soon


Tutoriels vidéo de mise en pratique du GUI Toolkit NF

(Cette liste sera mise à jour au fur et à mesure de leurs sorties.)


Pour les fans et les plus motivés, j'ai créé une playlist : Playlist GUI Toolkit NF

Abonnez-vous et lâchez un pouce bleu ;-) Ca fait toujours plaisir :'D

Re: Sortie du GUI Toolkit NF v1.0a pour TI Nspire & PC

Unread postPosted: 27 Jan 2022, 18:56
by Adriweb
Très belle présentation, on voit qu'il y a pas mal de features !
Mes félicitations de nouveau :)

Re: Sortie du GUI Toolkit NF v1.0a pour TI Nspire & PC

Unread postPosted: 27 Jan 2022, 19:24
by Lionel Debroux
Beau travail :)

Re: Sortie du GUI Toolkit NF v1.0a pour TI Nspire & PC

Unread postPosted: 27 Jan 2022, 19:46
by SlyVTT
Merci beaucoup à tous les deux :-D

Re: Sortie du GUI Toolkit NF v1.0a pour TI Nspire & PC

Unread postPosted: 27 Jan 2022, 22:02
by Shadow
J'ai corrigé une faute de BBcode.
Sinon, très belle annonce; bravo à toi SlyVTT :)

Re: Sortie du GUI Toolkit NF v1.0a pour TI Nspire & PC

Unread postPosted: 27 Jan 2022, 22:55
by SlyVTT
Merci Shadow.

Voici un mini tuto vidéo pour le faire le classique et sempiternel Hello World



Il sert aussi à montrer la facilité d'utilisation B-)

Je ferai régulièrement des tutos pour expliquer le fonctionnement du GUI Toolkit.

Ciao

Sly

Re: Sortie du GUI Toolkit NF v1.0a pour TI Nspire & PC

Unread postPosted: 28 Jan 2022, 14:03
by Bobb
MA-GNI-FI-QUE !

Re: Sortie du GUI Toolkit NF v1.0a pour TI Nspire & PC

Unread postPosted: 01 Feb 2022, 13:30
by SlyVTT
Hello,

voici le deuxième tuto, pour mieux maîtriser les notions de contraintes de positionnement et taille ... et avoir un rendu des applications plus sympa.



Je posterai ainsi régulièrement des tutos pour montrer comment utiliser le GUI Toolkit NF.

Bien entendu, je profite aussi de ces tutos pour optimiser/corriger/développer le GUI Toolkit.

Ciao

Sly

Re: Sortie du GUI Toolkit NF v1.0a pour TI Nspire & PC

Unread postPosted: 01 Feb 2022, 13:55
by critor
Mince, complètement oublié de le publier lundi matin comme promis et prévu, c'est vrai que tu n'es pas encore au courant de ce qui m'est tombé dessus... Toutes mes excuses.

En passant, suite à ton travail répété de qualité, je t'ai rajouté au groupe rédacteurs. Donc tu peux publier ce que tu veux quand tu veux en page d'accueil, c'est largement mérité.

Il devrait y avoir 2 grosses annonces qui arrivent (dont une qui ne dépend pas que de moi, donc pas sûr). Niveau visibilité, c'est peut-être mieux d'attendre à demain matin ou jeudi matin. Je tente de ne pas oublier cette fois-ci.

Re: Sortie du GUI Toolkit NF v1.0a pour TI Nspire & PC

Unread postPosted: 01 Feb 2022, 14:11
by SlyVTT
Pas de problème Critor, ne t'inquiète pas.
J'espère que le problème que tu évoques n'est pas en lien avec le précédent et que tu n'as pas encore des problèmes familiaux. En tout cas je suis de tout cœur avec toi et sache que le Toolkit peut attendre, il n'est pas à 5minutes près.

Je n'étais pas tellement sur le site ces quelques derniers jours car bien occupé par ailleurs (vive le COVID dans les écoles ...). Donc tu pourras transférer en page d'accueil quand tu juges que c'est le mieux et surtout quand tu as le temps.

Bon courage et comme d'habitude, haut les cœurs !!

Sly