Je n'ai jamais écrit d'interfaces utilisateur textuelles auparavant, mais j'ai pensé essayer termbox car cela semble assez simple. Je commence à comprendre, mais une chose qui me déroute est de savoir comment gérer les événements de redimensionnement de la fenêtre du terminal. Termbox prend-il en charge ce cas ? Idéalement, j'aimerais pouvoir définir une fonction qui s'exécute chaque fois que l'utilisateur redimensionne le terminal, et la fonction se chargerait de déterminer la nouvelle taille du terminal et de redessiner les cellules si nécessaire. Je ne vois aucune documentation à ce sujet, et je ne sais pas à quel point ce serait facile ou difficile.
Il y a deux façons de le gérer.
Type
défini sur EventResize
, plus Width
et Height
valides Clear
ou Flush
. Avant d'effacer et avant de rincer, il redimensionnera le tampon arrière interne. Ainsi, vérifier les résultats de la fonction Size
après les avoir appelées est le moyen d'attraper le redimensionnement.Lequel choisir dépend vraiment de la logique. Dans certains cas, vous aurez un redessin complet sur chaque événement que vous obtenez, puis vérifiez simplement la taille à chaque fois et cela fonctionnera. Ou si votre application effectue un traitement minutieux des événements et ne se redessine pas à chaque fois, vous pouvez attendre l'événement de redimensionnement.
Oui, ce n'est pas très bien documenté, car je ne suis toujours pas sûr de la bonne sémantique de ce comportement. Peut-être devrais-je mieux le documenter, ou peut-être créer un didacticiel quelconque expliquant divers aspects de termbox. Laissera ce problème ouvert comme rappel.
Pour ajouter mon expérience personnelle : j'appelais termbox.Size()
immédiatement après avoir reçu le EventResize
, donc les valeurs de retour étaient erronées. C'était assez facile de changer cela en event.Width, event.Height
, mais j'ai dû chercher un peu pour découvrir le problème. Idéalement, resize()
mettrait automatiquement à jour les valeurs renvoyées par termbox.Size()
, mais il semble que cela nécessiterait une refactorisation. À tout le moins, pourriez-vous ajouter un commentaire à termbox.Size()
qui avertit les utilisateurs de ce comportement ?
Mise à jour de la documentation Size(), est-ce mieux maintenant ?
Oui, ça m'a l'air plus clair. Merci!