Termbox-go: Comment gérer le redimensionnement du terminal ?

Créé le 26 avr. 2013  ·  4Commentaires  ·  Source: nsf/termbox-go

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.

Tous les 4 commentaires

Il y a deux façons de le gérer.

  1. Termbox a un événement de redimensionnement spécial. Vous les obtenez lorsque le terminal est redimensionné. http://godoc.org/github.com/nsf/termbox-go#Event - cette structure aura Type défini sur EventResize , plus Width et Height valides
  2. Vous pouvez simplement vérifier la taille à chaque fois que vous redessinez des choses. Le tampon interne est peut-être redimensionné dans deux cas : lorsque vous appelez la fonction 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!

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

agostonbarna picture agostonbarna  ·  8Commentaires

jroimartin picture jroimartin  ·  22Commentaires

dacez picture dacez  ·  10Commentaires

juliusv picture juliusv  ·  41Commentaires

cdlm picture cdlm  ·  9Commentaires