π
<-

News 2024
August (1)
July (1)
May (1)

News 2023
June (2)
April (1)
March (2)

News 2022
July (1)
June (4)
May (4)
April (4)
March (3)

News 2021
August (5)
July (1)
June (1)
May (3)
April (12)
March (4)

News 2020
August (1)
July (3)
June (2)
May (2)
April (7)
March (4)

News 2019
August (1)
June (1)
May (3)
April (7)
March (10)

News 2018
August (3)
July (7)
June (3)
May (8)
April (13)
March (5)

News 2017
August (1)
July (1)
May (10)
April (3)
March (4)

News 2016
August (12)
July (3)
June (8)
May (12)
April (7)
March (9)

News 2015
August (11)
July (7)
June (6)
May (10)
April (2)
March (6)

News 2014
October (12)
August (4)
July (3)
June (13)
May (14)
April (12)
March (15)

News 2013
October (30)
August (14)
July (8)
June (27)
May (12)
April (29)
March (19)
January (27)

News 2012
October (37)
August (40)
July (27)
June (19)
May (35)
April (34)
March (42)
January (46)

News 2011
October (22)
August (23)
July (14)
June (29)
May (44)
April (24)
March (27)

News 2010
August (6)
July (10)
June (4)
May (1)
April (2)
March (1)

News 2009
June (1)

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

New postby SlyVTT » 27 Jan 2022, 17:40

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
Last edited by SlyVTT on 01 Feb 2022, 20:57, edited 1 time in total.

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
710 utilisateurs:
>674 invités
>28 membres
>8 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)