Obligement - L'Amiga au maximum

Jeudi 25 avril 2024 - 00:31  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Point de vue : Rave et gadget ToolBar, la synergie des projets
(Article écrit par Daniel Jedlicka et extrait de Rear Window - janvier 2021)


Note : traduction par David Brunet.

En décrivant mes activités de programmation dans le précédent billet de mon blog, j'ai également mentionné que j'étais impliqué dans le projet Amiga Developer depuis un certain temps. Après la publication de ce billet, quelques personnes m'ont demandé si cela signifiait que j'allais moins m'investir dans cette équipe maintenant que je développe mes propres logiciels. La réponse est non, pas vraiment. En fait, il y a une bonne synergie entre Rear Window et le travail que je fais pour Amiga Developer, et les deux efforts ont bénéficié l'un de l'autre.

Je suis certainement partial en raison de mes intérêts personnels, mais je dirai que l'une des meilleures choses que l'initiative Amiga Developer a produite sont les classes de l'Enhancer Software Core : une collection gratuite étendant la boîte à outils pour l'interface standard d'AmigaOS 4. En effet, la principale raison pour laquelle j'aime promouvoir Enhancer Software Core est qu'il apporte de nouvelles possibilités à la programmation de l'interface graphique Amiga. Ainsi, lorsque j'ai commencé à travailler sur mon éditeur audio Rave, je savais que je voulais utiliser les nouvelles classes en plus des classes traditionnelles. Ce que je ne savais pas, c'est que Rave allait bientôt devenir un important banc d'essai, une épreuve du feu dans laquelle les classes d'Enhancer Software Core devraient faire leurs preuves.

Quelle que soit la rigueur de sa conception, un composant logiciel ne révèle sa vraie nature que lorsqu'il est utilisé dans un logiciel réel. J'entends par là non seulement que l'utilisation réelle expose les bogues et les inconvénients qui sont passés inaperçus au stade de la conception, mais aussi les tests bêta. L'utilisation réelle d'un logiciel a également tendance à jeter une nouvelle lumière sur la façon dont le composant pourrait fonctionner et sur les fonctionnalités qui pourraient manquer. Je me hasarderai à dire que beaucoup de gadgets d'AmigaOS ont vu le jour parce qu'un développeur travaillant sur un logiciel particulier avait besoin d'une fonctionnalité particulière. Ou est-ce une pure coïncidence que la boîte à outils de l'interface graphique ait reçu des mises à jour majeures alors que Simon Archer, l'un des principaux développeurs d'AmigaOS 4, travaillait sur son environnement de développement CodeBench ? Je ne le pense pas. Et ce n'est qu'un exemple parmi d'autres.

Ayant accès au dépôt de code source d'Amiga Developer, j'ai eu la chance, comme Simon Archer, de pouvoir façonner les classes que j'avais décidées d'utiliser dans mon logiciel. En fait, toutes les mises à jour récentes que j'ai faites au gadget Select (écrit à l'origine par Massimo Tantignone) et au gadget InfoData (Mark Ritter) ont été motivées par quelque chose qui a surgi pendant que je travaillais sur Rave. Et il ne sera pas surprenant que mon éditeur audio soit aussi directement responsable de la toute nouvelle addition à Enhancer Software Core : la classe de gadget ToolBar, que j'ai récemment couverte pour le blog d'Amiga Developer. Voici comment tout cela est arrivé...

J'ai l'habitude de commencer mes projets en concevant l'interface graphique. Bien qu'au final, elle ne ressemble que très peu à la version originale, je préfère procéder de cette manière car le fait de voir quelque chose de tangible sur l'écran stimule ma créativité (cela me donne aussi un sentiment d'accomplissement, malgré le fait que le programme ne fait encore rien). J'étais donc en train de concevoir une première barre d'outils pour Rave lorsque j'ai réalisé une fois de plus à quel point je déteste le gadget SpeedBar standard, car il est très long à mettre en place. Dans un acte de bravade, j'ai décidé de mettre le travail de côté et d'écrire une classe de gadgets de barre d'outils personnalisée : une classe qui serait basique dans ses fonctionnalités mais extrêmement facile à mettre en place. Je me suis dit que peu de programmes utilisent leur barre d'outils pour autre chose que déclencher une action, alors pourquoi ne pas se concentrer sur la fonction principale ? Le travail s'est avéré relativement rapide, et il serait resté une affaire sans lendemain (et je n'aurais pas à en parler dans un article) si je n'avais pas fait une erreur classique : j'ai partagé mon travail avec d'autres.

D'une certaine manière, je me suis tiré une balle dans le pied en proposant le gadget ToolBar comme contribution au lot Enhancer Software. Je me suis laissé aller à la sémantique, sans me rendre compte que si quelque chose est appelé "Enhancer", les gens s'attendent invariablement à ce qu'il ait plus de fonctionnalités. Or, ma classe de gadget n'avait pas plus de fonctionnalités que la SpeedBar, elle représentait simplement une alternative plus simple - ce qui n'a apparemment pas été perçu comme une valeur ajoutée. Les réactions qui ont suivi allaient de l'indifférence au mépris pur et simple, et ce fut une leçon douloureuse à apprendre. Un collègue développeur a gentiment envoyé une liste de fonctionnalités que ma classe devait absolument avoir avant qu'il ne prenne la peine de l'utiliser ; l'esprit d'équipe n'est-il pas formidable ? Mais nous, les programmeurs Amiga, sommes réputés pour notre résistance (en plus du fait que nous pouvons cuisiner un curry décent, ce qui nous rend très demandés dans les bureaux d'enregistrement), alors je n'ai pas abandonné aussi facilement et j'ai continué à travailler sur la classe parallèlement au projet Rave. Cette décision s'est avérée très judicieuse, car le gadget ToolBar a évolué au fur et à mesure de l'évolution du programme, en réponse à mes besoins croissants. Ainsi, une fonctionnalité a conduit à une autre jusqu'à ce qu'un beau jour (ouf !) j'ai finalement estimé que ma chère petite création ne pouvait plus être blâmée pour ne pas avoir suffisamment amélioré Enhancer Software.

gadget ToolBar
Mon écran Workbench montrant diverses configurations du gadget ToolBar

Un bref coup d'oeil à la capture d'écran ci-dessus peut suggérer qu'il y a peu de différence visuelle entre la ToolBar et l'ancienne SpeedBar. Oui, lorsque le gadget ToolBar a vu sa première version publique, quelques utilisateurs ont semblé déçus que les deux classes n'aient pas l'air différentes. Cependant, en y regardant de plus près, vous remarquerez certains détails qui vont au-delà de l'apparence par défaut et qui laissent entrevoir la configurabilité avancée de la barre d'outils. En particulier, la nouvelle classe présente un mode sans bordure, ce qui lui confère un aspect plus moderne et permet de réduire l'encombrement dans les interfaces graphiques encombrées. Il existe également des améliorations plus modestes et moins visibles, comme la gestion de plusieurs jeux d'images (et la possibilité de passer facilement de l'un à l'autre), le remplissage intérieur réglable des boutons de la barre d'outils ou le style configurable des barres de séparation.

Une fonctionnalité dont je suis vraiment fier d'avoir implémenté est la gestion des débordements. De quoi s'agit-il ? Eh bien, certaines barres d'outils peuvent être assez longues et prendre beaucoup de place dans la fenêtre du programme, ce qui peut compliquer l'utilisation (surtout lorsque la surface de l'écran est limitée). C'est pourquoi les classes de barres d'outils sont généralement conçues comme des éléments d'interface graphique "repliables", pour permettre de réduire la fenêtre à une taille plus petite. Lorsque la fenêtre devient trop petite pour contenir tous les membres de la barre d'outils, on obtient une situation appelée débordement. La façon dont cette situation est gérée dépend de la classe en question. Par exemple, le gadget SpeedBar utilise un mécanisme de défilement qui est déclenché en maintenant la touche "Shift" enfoncée et en déplaçant la souris vers la gauche/droite (ou vers le haut/bas si le gadget est orienté verticalement). J'ai toujours trouvé ce comportement plutôt bizarre et peu intuitif, et j'ai donc préféré une solution plus intelligente. Comme le montre l'image ci-dessous, le gadget ToolBar réagit au débordement en affichant un bouton de sélection sur la droite. En cliquant sur le sélectionneur, vous invoquez un menu contextuel dont les éléments individuels correspondent aux membres de la barre d'outils qui sont actuellement hors de vue. Ainsi, même dans une fenêtre de taille minimale, l'accès aux fonctions du programme est vraiment rapide et facile (les éventuels récalcitrants seront heureux d'apprendre que la gestion du débordement est facultative, donc si vous préférez avoir une barre d'outils "statique" toujours affichée en entier, il vous suffit de ne pas activer cette fonctionnalité).

gadget ToolBar
Débordement du gadget ToolBar dans MultiEdit

Après avoir finalement publié la mise à jour du gadget ToolBar en octobre 2020, j'ai pensé laisser les classes d'Enhancer Software au repos pendant un certain temps et me concentrer pleinement sur mon éditeur audio, mais comme tout programmeur expérimenté le sait - l'homme propose, le logiciel dispose. Peu après m'être attelé à la tâche, le travail sur Rave m'a donné une autre idée. Contrairement à ce qui se passe dans d'autres sphères de l'activité humaine, les idées dans le domaine de la programmation peuvent être vraiment dangereuses, car elles conduisent souvent à une dérive des fonctionnalités et, finalement, à des projets qui ne sont jamais terminés. Les grandes entreprises de logiciels engagent même des chasseurs professionnels pour repérer les programmeurs ayant des idées et les abattre sur place. Mais en tant qu'humble indépendant, je n'avais pas à m'inquiéter, et comme la période de Noël me promettait un peu plus de temps libre, j'ai décidé d'essayer une fois de plus le gadget ToolBar. Alors, de quoi s'agit-il ?

Eh bien, la barre d'outils du programme principal de Rave contient une section avec des boutons qui contrôlent le zoom de l'affichage de la forme d'onde. À l'origine, le niveau de zoom actuel était indiqué dans la barre d'état en bas de l'interface graphique, ce qui était correct mais ne semblait pas correct. Du point de vue de la conception de l'interface utilisateur, je pense que si un élément de l'interface graphique contrôle une valeur particulière, la valeur doit de préférence être affichée à proximité de l'élément de contrôle, afin d'avoir une correspondance visuelle claire entre eux. J'ai donc commencé à réfléchir : et si la valeur du niveau de zoom était affichée dans la même section de la barre d'outils, c'est-à-dire à côté des boutons de zoom, plutôt que quelque part loin en dessous dans la barre d'état ? Bien sûr, le gadget ToolBar n'était pas exactement adapté : vous pouviez créer un bouton de texte uniquement, vous pouviez même modifier le texte à la volée, mais il avait toujours l'apparence et le comportement d'un bouton. Ce qu'il me fallait, c'était un nouveau type de membre de barre d'outils, une zone d'affichage en lecture seule rationalisée pour un contenu textuel dynamique. Heureusement, la conception interne du gadget me permet d'ajouter à peu près n'importe quoi (du moment qu'il s'agit d'un objet BOOPSI), si bien qu'avant que la nouvelle année ne sonne, le type de membre Textbox était prêt et opérationnel. Voici à quoi il ressemble dans la version de développement actuelle de Rave.

Rave
Rave - notez la section zoom dans la barre d'outils qui montre maintenant le niveau de zoom

Pour faire bonne figure, j'ai également ajouté la gestion des couleurs et des styles de texte, car il était clair pour moi que quelqu'un demanderait ces fonctionnalités tôt ou tard. Maintenant que j'y pense, j'ai dû faire du gadget ToolBar l'une des classes les plus polyvalentes et les plus configurables de l'ensemble des éléments BOOPSI d'AmigaOS 4. Pourquoi est-ce que je me sens soudainement si fatigué ?

Bon, ça devient long (et tard), alors il est temps de conclure. Un vieux proverbe slave dit que l'on ne peut pas s'asseoir sur deux chaises en même temps. Et il y a une bonne part de vérité dans ce proverbe : travailler sur deux projets simultanés signifie souvent que l'un d'eux vous privera de votre temps et de votre attention. D'un autre côté, les projets peuvent aussi s'inspirer mutuellement, se développer ensemble et produire un effet de synergie entre eux. Cela a très bien fonctionné pour moi : les classes pour Enhancer Software et l'éditeur audio Rave ont tous deux grandement bénéficié de cette synergie. Je suis sûr qu'il y en aura d'autres à l'avenir. Et je serai là pour vous le dire, alors gardez un oeil sur mon site Rear Window.


[Retour en haut] / [Retour aux articles]