L’extension Widgets permet d’avoir des widgets (des contrôles d’interface graphique).
Présentation détaillée :
L’extension fournit pour le moment un seul widget : la zone de texte. Elle possède de nombreuses fonctionnalités :
Couleurs totalement personnalisables
Possibilité de sélectionner du texte
Possibilité de masquer les caractères (pour un mot de passe par exemple) et de mettre un texte indicatif
Bugs connus :
Après la compilation d’un jeu, il faut copier manuellement le fichier WidgetsCore.dll (Windows) ou WidgetsCore.so (Linux) du dossier CppPlatform/Extensions/Runtime (pas d’un autre dossier) dans le dossier du jeu compilé
Sur Linux uniquement : Il est impossible d’entrer du texte dans la zone de texte depuis l’aperçu (l’aperçu fenêtré ne marche pas non plus)
Sur Windows : Il est impossible d’entrer du texte dans la zone de texte depuis l’aperçu traditionnel, il suffit de lancer l’aperçu dans le mode “fenêtré” pour éviter ce bug
Boost est composé essentiellement de fichiers d’entêtes, donc il n’est pas si lourd que ça ( suivant l’utilisation qui est faite ) : Les jeux l’utilisent déjà, notamment pour tout ce qui est pointeurs intelligents et compagnie.
Donc si SFGUI utilise Boost juste dans un domaine bien précis, ça vaut peut être le coup de l’utiliser ?
Peut-être, mais Boost est utilisé par tous les widgets de SFGUI et SFGUI elle-même est très lourde.
Enfin, maintenant que j’ai commencé à la faire à la main…
Quelques news :
Comme l’auront remarqué ceux qui ose parcourir la catégorie du forum consacrée au dev d’extension,
je vais finalement utiliser une projet libre (licence zlib) qui fournit des widgets pour la SFML : [size=150]SFGUI[/size]
Cette bibliothèque est toujours en développement (très actif : dernière modif de la lib date d’il y a quelques heures) et fournit pour le moment des widgets simples qui sont :
Les boutons
Les entrées de texte
Différent widgets pour positionner les autres (ne sera pas utiliser par mon extension)
Des fenêtres dessinées dans le rendu (ne sera pas non plus utilisé)
Des glissières (slider) pour sélectionner une valeur dans un intervalle de valeurs
Des barres de redimensionnement
Bon, ça peut paraître peu mais la bibliothèque évolue : ils travaillent sur une liste multi-colonne pour sélectionner des éléments.
Donc, pour commencer réellement la création et l’adaptation de SFGUI pour GD, je vais attendre la prochaine version de GD car elle fournira une fonctionnalité nécessaire au fonctionnement interne de SFGUI.
Je confirme pour la personnalisation des widgets séparément : cela vient d’être ajouté.
D’ailleurs, un autre moteur de rendu des widgets (ce qui donne l’apparence des widgets) est en développement.
Il existera donc 2 moteurs de rendu de SFGUI :
BREW (actuel) qui utilise des rectangles, cercles, lignes pour faire un rendu des widgets
BOB (celui en cours de dev) qui utilises des images
Je viens de faire la partie qui gère la personnalisation de la zone de texte, voici tout ce que l’on peut personnaliser (il reste encore des choses à ajouter) :
[attachment=0]EditEntry.png[/attachment]
On peut donc personnaliser 3 couleurs sur les 4 états de la zone de texte.
Cette extension serait un très bon apport à GD :
Je peux contribuer si jamais tu ouvre le code source, ou si tu souhaite des conseils sur comment implémenter telle ou telle chose.
Merci de ton soutien 4ian,
mais je bute sur un petit problème lié à SFGUI : les widgets conservent leur focus même si un autre le prend. La cause peut être le fait que je les utilise indépendamment sans container. Je voudrais bien utiliser un container, mais il faut faire son rendu sans faire ceux des widgets qui sont dedans. Or, c’est pas possible de faire ça avec GD vu que chaque widget a son rendu…
Bref, j’attends une réponse du dev de SFGUI : http://www.sfml-dev.org/forum/viewtopic.php?t=6112&postdays=0&postorder=asc&start=15&sid=6c020fe7c94438b9fa6e2116aaefabc8
Cependant, j’ai réussi à bidouiller un truc, mais c’est pas optimal.
EDIT : Il se peut que j’ouvre le code source, mais pour le moment, je code le principal pour tester plus facilement.