Salut Yannick, serait t'il possible d'avoir un exemple que tu aurais fait ? histoire d'avoir quelque chose de concret ! ----- Original Message ----- From: "Yannick Youalé" <[email protected]> To: <[email protected]> Sent: Monday, April 23, 2012 12:56 AM Subject: [progliste] ControlCreator- logiciel de conception graphique des fenêtres pour aveugles
> > Salut la progliste ! > > Je suis Yannick Daniel Youalé, et certains d'entre vous me connaissent > sous le pseudonyme de mailtoloco. > > Je vous écris aujourd'hui pour vous proposer un logiciel de ma conception > en version alpha. J'ai nommé: controlCreator. > Il s'agit d'un utilitaire, initialement destiné aux programmeurs aveugles > et sensé leur apporter plus de facilité dans ce qui est pour l'instant > leur point faible: la conception graphique des fenêtres. > > Vous pouvez le télécharger ici: > > http://dl.dropbox.com/u/50237171/ControlsCreator.zip > > Pour l'instant, il n'a principalement été aménagé que pour le visual basic > 6, langage de programmation certes arriéré, mais qui possède l'une des > plus grandes simplicité que je connaisse. > > Néanmoins, à terme, l'une de ses particularités devrait être de pouvoir > être adapté pour n'importe quel autre langage de programmation via un > langage de script (que j'ai voulu être le VBScript). > > > > > > Une autre des particularité du controlCreator, qui m'est venue d'une > révélation, a été de concevoir la gestion des objets d'une fenêtre, non > plus de façon linéaire, mais plutôt dans une arborescence dont les noeuds > représenteraient la fenêtre elle-même et ses objets enfants. > > En effet, gérer une liste de controls dans une arborescence pourrait être > plus facile à vivre pour des développeurs aveugles car, c'est certainement > l'un des types d'objet dans windows auquel il sont le plus habitués, > qu'ils manipulent le mieux, et qui serait le plus approprié à représenter > la structure hierarchique de l'organisation des controls sur une form. > Et c'est sur ce principe de base essentiel que repose mon logiciel > "controlCreator". > > Un petit bémol cependant. Comme vous le constaterez en lançant > l'application, le control d'arborescence que j'utilise n'est pas le > control natif de windows, mais plutôt celui qui m'est proposé parmi les > objets du langage de programmation de développement que j'ai utilisé. > Alors, il pourrait manquer à certains moment de vous dire si un noeud est > ouvert ou pas. > Et Vous devrez probablement désactiver la lecture des graphiques pour ne > pas être embêté lors de la lecture des informations. > De plus, je dois aussi dire que ce control d'arborescence n'est > malheureusement pas reconnu par NVDA. > > Quoi qu'il en soit, cela ne devrait malgré tout pas poser trop de > problèmes avec jaws. > > En attendant que je me développe un control activX en MFC qui se > comportera mieux, disons nous que nous allons utiliser celui-là, ne > serais-ce que pour expérimenter. > > x. Description du logiciel > > ControlCreator est un logiciel (pour l'instant) non installable, donc > transportable dans une clée USB, conçu en vb6, dôté de fonctionnalités > permettant aux aveugles dans une arborescence et d'autres objets > accessibles de: > > * Créer et réorganiser des formulaires et des controls, cela de façon > hierarchique (avec des parents, des enfant, des sous-enfants, etc); > > * dimensionner et positionner ces formulaires et ces controls en > choisissant le type de coordonnées (par pixels, par twip). Pour le moment, > ne sont pas encore implémenté les positionnement et dimensionnement par > centimètre, par milimètre, par point, par position de grille (colonne, > ligne, colspan, rowspan)) > > * assigner des valeurs aux propriétés propres à chaque élément des > fenêtres; > > * attribuer des couleurs d'arrière-plan et de texte par des outils > accessibles dans lesquels une grande variété de couleurs sont nomées en > français ou en anglais. Ce vollet n'est pas encore totalement implémenté, > mais sachez quand même que je me suis servi du fichier colors.ini du > dossier des paramètres partagés de jaws. > > Toutes les commandes étant disponibles par les menus (barre des menus et > menus contextuels), les boutons ou les raccourci clavier. > > A la fin de la procédure de création, l'utilisateur pourra générer un > fichier à l'extension ".frm" contenant le code de la form et de ses > controls. Vous pourrez alors intégrer ce fichier frm dans vos projets > visual basic. > > De même, Via le menu fichier, ouvrir, vous pourrez importer le code d'un > formulaire visual basic à l'extension ".frm" déja existante et le modifier > dans le logiciel pour le réenregistrer dans ce fichier. > > Ainsi, le but de ce logiciel sera à terme de pouvoir importer et exporter > le code d'un fichier spécifique au langage pour lequel il est destiné. > > x. Les controls > > Le code des controls insérés dans les formulaires du ControlCreator > proviennent d'un sous dossier de l'application > dans lequel ils sont conservés dans des fichiers texte. > Lors de l'insertion de controls nécessitant des importations d'API, > controlCreator vous avertira de l'existance ou non de ces API sur > l'ordinateur sur lequel vous travaillez. > Bien entendu, il vous sera possibles d'ajoutter d'autres codes de controls > dans le dossier des modèles de controls si vous le désirez. > > > x. fonctionnement du logiciel > > Quand vous lancez le programme par le fichier controlCreator.exe, vous > vous trouvez sur la fenêtre MDI principale. Elle contient la barre des > menus que je vous invite dans un premier temps à explorer. > > Pour créer votre premier formulaire, vous pouvez faire "ctrl+n", ou alors > fichier, nouveau sous-menu, formulaire. > > Vous remarquerez que dans nouveau sous-menu, une des trois options vous > permet de créer un formulaire à onglet. Fonctionnalité extrèmement > intéressante que vous explorerez par vous-même plus tard. Mais pour > l'instant, continuons ! > > Lorsque votre formulaire s'ouvre, vous vous trouvez sur une arborescence. > Et le premier noeud représente le formulaire. Il porte d'ailleurs le nom > générique "form1". > > Imaginons maintenant qu'au formulaire nommé form1, vous vouliez créer des > controls enfants. Prenons par exemple: > * un control label > * et un control textbox. > > Vous vous placez sur le noeud form1. ha ! vous êtes déja dessus. > > Vous faites application pour ouvrir le menu contextuel; > > Vous faites flèche bas jusqu'à l'item intitulé "Nouveau control > enfant...", et vous faite entrer. > > Une boîte de dialogue s'ouvre pour vous demander quel type de control vous > voulez insérer. Vous vous trouvez dans une liste. > > Vous faites alors flèche bas jusqu'à l'élément label, ou alors vous tapez > la première lettre de l'élément que vous recherchez pour le trouver plus > rapidement, et vous faites entrer lorsque vous l'avez trouver. > > Lorsque la boîte de dialogue se referme, vous êtes repositionné dans > l'arborescence sur un control nommé "label1", et qui est, comme vous le > constaterez, un noeud enfant du noeud form1. > > Ensuite, pour créer la textbox, étant positionné sur le label1, vous > referez menu contextuel et choisirez cette fois "nouveau control après..." > avant de faire entre et de choisir dans la boîte de dialogue qui s'ouvrira > le type textbox. > > Voilà ! J'espère que vous avez compris le principe. > > Vous pourrez ainsi, grace au menu contextuel: > > * créer des control avant, après, ou comme enfant du control sur lequel se > trouve le curseur pc. > > Et toujours dans le menu contextuel, dans paramètres sous menu que vous > atteindrez directement en faisant flèche haut une fois) vous remarquerez > que vous pouvez également: > > * renommer un control, > * modifier le caption (ou légende) d'un control (pour ceux qui en sont > dotés). > > La modification du type d'un control n'est pour lemoment pas implémentée. > > x. un déplacement logique et rapide dans l'arborescence > > > la combinaison "ctrl+origine" vous amènera au premier control de > l'arborescence qui est, le formulaire lui-même. > > la combinaison ctrl+fin vous amènera au dernier control du dernier niveau > hierarchique de l'arborescence du formulaire > > la touche origine vous amènera au premier des controls du niveau > hierarchique sur lequel vous vous trouvez, c'est-à-dire au premier des > controls frères courants. > > Et la touche fin vous amènera au dernier control du niveau hierarchique > sur lequel vous vous trouvez. C'est-à-dire au dernier des controls frères > courants. > > Ces commandes de déplacement sont selon moi importantes car, elles > permettent de se déplacer facilement lorsque le nombre de control devient > important. > > > > x. le déplacement des controls dans l'arborescence > > Deux méthodes possibles > > x. Méthode de déplacement 1 > > Vous pourez déplacer les control dans l'arborescence par le couper-coller > ou le copier coller. > > A Chaque fois que vous collerez un control préalablement coupé ou copié, > une boîte de dialogue s'ouvrira pour vous demander si vous voulez coller > le control présent dans le presse papier avant, après, ou comme enfant du > control sous le curseur. > > Si par exemple vous ouvrez plusieurs formulaires à la fois, vous pourrez > copier-coller des controls d'un formulaire à l'autre. > > Soit dit en passant, basculer entre les formulaires ouverts, c'est > ctrl+tab. > > x. méthode de déplacement 2 > > Vous pourrez déplacer les controls par les raccourcis clavier suivant > > * alt+flèche haut: déplace le control courant dans l'arborescence vers le > haut > > * alt+flèche bas: déplace le control courant dans l'arborescence vers le > bas > > * alt+flèche gauche: déplace le control courant vers la gauche dans > l'arborescence; autrement dit, le place comme frère de son parent actuel. > > * alt flèche droite: déplace le control courant vers la droite dans > l'arborescence; autrement dit, le place comme l'un des enfant du control > le précédent. > > x. le positionnement des controls > > NB: pour pouvoir afficher les coordonnées géographique des controls dans > le texte des noeuds, vous devrez valider sur affichage, afficher les > coordonnées dans le texte des noeuds. > > > les commandes de positionnement sont regroupées dans le menu > "positionnement sous menu" du menu contextuel. > > sinon, rapidement, ctrl+p ouvre une série de boîtes de dialogue dans > lesquelles on vous demandera le left et le top du control sous le curseur. > > A noter que dans les zones d'édition de ces boîtes de dialogue, vous > pourrez entrer des expressions simples. Par exemple, "2000 + 120 - 240" > sera pris en compte et calculé. > > Sachez également que lorsque vous êtes positionné sur un control, vous > pourrez modifier sont left ou son top à chaque fois de (120 twips ou 8 > pixels) grace aux raccourcis clavier > * ctrl+flèche gauche ou flèche droite > * ctrl+flèche haut ou flèche bas > > Et là, si vous effectuez ces commandes raccourci, en observant le > comportement de jaws, la question que vous allez vous poser est de savoir > comment je suis arrivé à faire en sorte que jaws donne en temps réel la > valeur modifiée. > > En fait, il s'agit d'une petite astuce qui veut que après que la commande > raccourci ait été effectuée, je remplace le texte du noeud courant par la > valeur à lire, pendant quelques fractions de secondes, ce qui laisse le > temps à jaws de se rendre compte que le texte surligné à changé, et le > force à le lire, puis je remet le texte qui doit normalement apparaître > sur le noeud, c'est à dire: le type du control, son name, son caption, et > ses coordonnées géographiques. > > Malin n'est-ce pas ? > > x. le dimensionnement des controls > > NB: pour pouvoir afficher les informations de dimension des controls dans > le texte des noeuds, vous devrez valider sur affichage, afficher les > coordonnées dans le texte des noeuds. > > les commandes de dimensionnement sont regroupées dans le menu > "dimensionnement sous menu" du menu contextuel. > > sinon, rapidement, ctrl+d ouvre une série de boîtes de dialogue dans > lesquelles on vous demandera le width et le height du control sous le > curseur. > > Sachez également que lorsque vous êtes positionné sur un control, vous > pourrez modifier sont width ou son height à chaque fois de (120 twips ou > 8 pixels) grace aux raccourcis clavier > * maj+flèche gauche ou flèche droite > * maj+flèche haut ou flèche bas > > Là aussi, vous vous rendrez compte que les modification seront lues en > temps réel et cela vous permettra de savoir où vous arrêter. > > > x. les rapports > > dans le menu outils, vous trouverez "rapports sous menus" > > Ce n'est pas encore totalement codé, mais là devrait se trouver des > options permettant de produire des rapports descriptifs sur la disposition > des controls sur le formulaire courant. > > Ce qui pourrait nous permettre d'avoir rapidement une idée claire sur la > disposition géographique des controls d'un formulaire. > > C'est sûr qu'Ici, il va me falloir un bon algorithme d'intelligence > artificielle. > > > x. autres fonctionnalités > > * Pour les voyants et malvoyants, j'ai prévu dans le menu fichier un item > aperçu pour pouvoir avoir un aperçu visuel de ce à quoi ressemblera le > formulaire lorsqu'il sera exécuté. > Pour le futur, je prévois la possibilité pour ces voyants et mal-voyants > de pouvoir grace à la souris, modifier la disposition et les dimensions > des controls. > > * Dans nouveau sous-menu du menu fichier, vous trouverez une option > ouvrant un assistant permettant de créer une fenêtre à onglet. > Donc, sans effort, vous pourrez créer le code de ce type de formulaire qui > selon moi est généralement l'un des plus difficile à créer par les > aveugles. > > * Dans le menu édition, des éléments de menus vous permettront de > rechercher et trouver rapidement des controls quel que soiet leur > emplacement dans l'arborescence. > > * Dans le menu outils, scripts sous-menu, vous trouverez des exemples > d'items de déclanchement de scripts essentiellement d'exportation que j'ai > créé pour produire le code vers des langages qui vous seront listé. > Attention ! Tous ne fonctionnent pas pour l'instant. > > * des options vous sont également offertes pour : > > sélectionner des controls (avec ctrl+entrer), puis leur appliquer une > action. > > En partant du principe que le premier control sélectionné est toujours le > modèle, vous pourrez assigner des mêmes dimensions, positions à une série > de controls sélectionnés; > > Vous pourrez aligner une série de controls les uns à la suite des autres, > en indiquant bien sûr la direction (droite ou bas) et l'écart qu'il doit y > avoir entre eux. > > Vous pourrez modifier une propriété pour une série de controls > sélectionnés. > > Par exemple, si vous voulez déplacer une série de controls de 100 pixels > sur la droite, > > Sélectionnez tout d'abord les controls en faisant ctrl+entrer sur chacun > d'entre eux. > > faites ensuite menu contextuel, série sous-menu, > > faite entrer sur l'item "modifier une propriété pour une série de > controls. > > Dans la boîte de dialogue qui s'ouvrira, vous remarquerez dans la liste de > départ que les controls à modifier sont cochés. Vous pouvez en décocher ou > en cocher d'autres. > > Ensuite vous choisirez la propriété à modifier (left, top, width ou > height). > > et enfin vous taperez la valeur de la modification avant de faire entrer > sur le bouton ok. > > NB: Pour vider la liste des controls sélectionnés, c'est tout simplement > échap. Un son de vidage de corbeille vous avertira que l'action s'est > effectuée avec succès. > > x. conclusion > > Si j'ai travaillé comme un dingue sur ce logiciel et que je vous le > soumet, c'est que je crois en sa capacité à nous rendre la tache beaucoup > plus facile. > Comme je l'ai écris tantôt un peu plus haut, il s'agit ici d'un principe > que je vous appelle à m'aider à développer, à améliorer. Je n'ai pas la > prétention de croire qu'il s'agisse de la panassé, le remède qui guérira > tous nos maux, mais simplement d'une avancée que vous, développeurs > aveugles, pouvez m'aider à transformer en un outil de plus qui nous aidera > à rattraper une partie de notre retard sur les voyants. > > Bien entendu, je suis conscient que ce que j'ai fait est loin d'être > parfait, et s'il s'avère qu'il faille modifier ce projet, le reprendre > dans un langage plus approprié, avec des outils plus appropriés, je serais > heureux de participer en transcrivant mes codes, en faisant part de mon > expérience dans le domaine car, ce qui m'importe avant tout, c'est que > nous puissions arriver à un résultat efficace. > > Le controlCreator peut très bien se concevoir en projet autonome, ou être > adapté pour être intégrée comme concepteur graphique à un éditeur de > code. > > J'ai commencé par le configurer pour la création de code visual basic, mon > langage préféré, mais ce logiciel pourrait sans grands efforts être > adaptés à d'autres langages de programmation tels que: > * le VBA, > * le VB.net, > * le WX de python, > * le Swing de java > * ou tout autre langage graphique qu'utilisent les programmeurs aveugles. > > Même si vous n'êtes pas un programmeur visual basic, Téléchargez-le et > utilisez le pour me faire part de ce que vous en pensez. > > Pour finir, je dirais que nous pouvons attendre qu'il nous proposent des > outils les plus accessibles possibles, les plus gratuits possibles, les > plus professionnels possibles, ou alors nous pouvons sortir de notre > rêverie, choisir nous même de créer ces outils car, mieux que personne, > nous savons ce dont nous avons besoin, et désormais, nous avons les > capacités techniques de réaliser nos rêves. > On peut toujours se complaire dans la difficulté, cela nous donnera > l'illusion d'être compétent. Cependant nous appartenons à l'ère des > vitesses pour lequel l'aveugle avec son block-note risque de devenir un > boulet. > Acceptons de souffrir comme des chiens pendant un jour, une semaine, un > mois, pour n'avoir plus qu'à appuyer sur un bouton afin que notre bébé > fasse tout le travail ou presque à notre place. > > Yannick Daniel Youalé > alias mailtoloco > Douala, > Cameroun, > Afrique Centrale > > La programmation est une religion. > Aimez-la, ou quittez-la. > Progliste : > Pour se désinscrire de la liste : > mailto:[email protected]?subject=unsubscribe > > Pour voir les archives de la liste : > http://www.mail-archive.com/[email protected]/ > > Pour accéder aux fichiers de la liste > http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr > Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en privé, > je vous répondrez en privé. Progliste : Pour se désinscrire de la liste : mailto:[email protected]?subject=unsubscribe Pour voir les archives de la liste : http://www.mail-archive.com/[email protected]/ Pour accéder aux fichiers de la liste http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en privé, je vous répondrez en privé.
