[progliste] Re: UniversalSpeech javascript thunderbird
salut Abdel, et bien c'est fait, je suis arrivé au bout . enfin presque ... une mise à jour de universal speech serait le topt du top ... ci dessous je te mets juste par curiosité mon petit bout de script ... Components.utils.import("resource://gre/modules/ctypes.jsm"); function chichiTTS (){ // je construis le chemin, je n'ai pas trouvé de fonction directe ...let basename =OS.Path.basename (OS.Constants.Path.profileDir) let path =OS.Constants.Path.userApplicationDataDir path =OS.Path.join (path ,"Profiles",basename,"extensions","chi...@rptools.org","chrome","content","dll") // ouverture de la dll let nvdaPathName =OS.Path.join (path , "nvdaControllerClient.dll") let nvda= ctypes.open (nvdaPathName) // declaration des méthodes contenus dans la dll let nvda_say =nvda.declare ("nvdaController_speakText", ctypes.default_abi , ctypes.void_t , ctypes.jschar.array () , ctypes.bool) let nvda_isRunning = nvda.declare ("nvdaController_testIfRunning",ctypes.default_abi,ctypes.bool,) chichiTTS.prototype.nvda_say =function (word , interrupt ){nvda_say (word , (interrupt==undefined)?true:interrupt)} chichiTTS.prototype.nvda_isRunning =function (){return nvda_isRunning ()} instanciation de l'objet } chichiTTS =new chichiTTS () Le 26/05/2017 à 12:20, yannick a écrit : Merci Abdel merci beaucoup, j'ai avancé ! maintenant, il me prononce la lettre "i" du mot "oui", je vais donc y arriver j'espère , mais comme je n'ai jamais bossé la base même du c, je vais sans doute devoir y revenir ... oui, j'ai bossé du lua, mais j'ai pas pensé à aller fouiller mes archives .. comme je m'apprête à partir, je devrais revenir vers vous après demain, merci merci ! Le 26/05/2017 à 11:36, Abdel a écrit : Salut Yannick, Comme je vois que ton mail a suscité beaucoup de réactions, je me permets d'envoyer ma petite contribution dans le tas, en espérant que tu auras le temps de la lire lol ! Md... Tout d'abord, un grand merci à toi de partager avec nous ces techniques modernes d'accès aux méthodes d'une DLL externe en JavaScript. Je pense que tu dois certainement déjà du avoir utilisé les accès FFI en langage lua, par exemple, ou l'accès aux API sous la forme d'objets com, en VBScript, langage script de JAWS, etc... Revenons à ta question initiale : La méthode declare de ton objet lib requiert plusieurs paramètres, selon le fait que tu fasses appel à une fonction externe figurant dans la dll, ou uniquement à une propriété. Si c'est juste une propriété, tu as juste besoin de son nom sous la forme d'une chaîne de caractères en premier paramètre, et à sont type en C en second paramètre. C'est d'ailleurs bien documenté ici : https://developer.mozilla.org/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/Library#declare%28%29 Cependant, si c'est une fonction, voici ce dont tu vas avoir besoin. 1. Le nom de la fonction en premier paramètre sous la forme d'une chaîne de caractères. 2. Une constante ABI (Application Binary Interface), qui va permettre à ton JavaScript de mieux pouvoir savoir comment se comporter avec cette fonction. Par exemple, si c'est une fonction figurant dans une DLL Windows, il faudra juste mettre ctypes.winapi_abi ou ctypes.stdcall_abi. Comme dans ton cas, ce n'est pas le cas, tu dois mettre ctypes.default_abi. 3. Le troisième paramètre te demande d'indiquer le type en C du retour de ta fonction. 4. à partir de ce paramètre 4, tu dois fournir les différents types en C de chaque paramètres de ta fonction, si bien sûr, celle-ci comporte des paramètres. Si ce n'est pas le cas, on s'arrête au paramètre 3. Cette méthode declare de l'objet library devrait retourner une fonction, qui va cibler la propriété ou méthode demandée, selon le contexte. Donc, premier réflexe à avoir, bien scruter les différentes fonctions et propriétés de ta DLL, pour mieux savoir comment les exploiter. Voili voilou, merci à toi. Bien amicalement, Abdel. Le 26/05/2017 à 02:40, yannick a écrit : bonjour, comme toujours, je m'écroule juste devant le verre à sangria . je suis dans thunderbird, et je souhaite utiliser universal speech. pour cela j'importe le module ctypes (Components.utils.import("resource://gre/modules/ctypes.jsm"); puis j'ouvre la dll de cette manière : us =ctypes.open ("C:/UniversalSpeech/bin/UniversalSpeech.dll") et c'est maintenant que je bloque parce que je dois faire une déclaration et je ne comprends pas trop les paramètres,. je vous fais un copié collé,, et si vous avez une idée,cela me dépannera, merci ! declare() Declares an API from the native library, allowing it to be used from JavaScript. This can be used both for exported data symbols and for functions. CData declare( name[, abi, returnType argType1, ...] ); Parameters name The name of the symbol exported by the native library that is to be declared as usable from JavaScript abi The
[progliste] universal speech
bonjour ! Quentin, dis moi, est ce que tu as le projet de modifier universal speech pour qu'il puisse fonctionner sur les windows 7 64 bits ? en passant : est ce que ce problème est présent uniquement sur cette version de windows ? en passant numéro 2 : je compte l'utiliser dans mon extension de thunderbird, et comme tu le sais, il y a pas mal de gens (je suppose ) qui l'utilisent ! Donc, si j'arrives à correctement écrir l'extension, cela profitera à beaucoup de gens ... en passant numéro 3 : j'ai aussi l' objectif de faire traduire mon extension . En concclusion : si tu comptes l'écrir à nouveau, ce n'est pas une épine que tu m'enlève du pied, mais une lance Progliste : Pour se d�sinscrire de la liste : mailto:progliste-requ...@ml.free.fr?subject=unsubscribe Pour voir les archives de la liste : http://www.mail-archive.com/progliste@ml.free.fr/ Je vous rappelle que les pièces jointe sont activés leur taille est limité à 2 MO Pour acc�der aux fichiers de la liste http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr Ou en utilisant la nouvelle page de partage : http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv�, je vous r�pondrez en priv�.
[progliste] Re: WxPython et touches du clavier
Hello Yannick et tous, Message d'un distrait... Tu parles de compatibilité cassée entre ForPython et la dernière version de 6Pad++. Perso, je suis (je crois) à l'avant-dernière version, alpha 10.1. Je n'ai pas encore réellement utilisé forPython, et en tout cas, je n'ai pas fait de nouveaux essais depuis... peut-être mars-avril. Quelle serait la version de ForPython qui irait bien avec la version de 6Pad++ alpha 10.1? Merci, J.-F. Le 18/05/2017 07:11, Yannick Youalé a écrit : Salut à tous, Tout le monde a apparemment oublié le module forPython pour 6pad++; Qui donnait la possibilité de: * taper le nom d'un objet, de mettre un point, et de faire ctrl+j pour avoir la liste des méthodes de l'objet en question; * ou de se placer sur un mot clé, et de faire ctrl+i pour que la pseudo console du 6pad++ s'ouvre pour afficher une description du mots clé en question. Mais bon, vu aussi que la compatibilité du forPython a été cassée avec l'arrivée de la dernière version du 6pad++, et que ses auteurs ont un peu la flème de le rerendre compatible, c'est un peu compréhensible. Cela dit je continue d'utiliser la version qui fonctionnait pour mes besoins personnels. PS: Maan, ton travail était une référence, et je m'en suis d'ailleurs inspiré pour travailler sur le forPython. Je l'ai toujours dans un coin de ma machine. Yannick Daniel Youalé La programmation est une religion. Aimez-la, ou quittez-la. www.visuweb.net Le 17/05/2017 à 22:15, Abdel a écrit : Coucou Maan, Je ne connaissais pas ce logiciel... Cependant, j'ai eu l'occasion d'utiliser la traduction de l'éditeur Edsharp que tu m'avais envoyé sur une autre liste. Je t'en remercie beaucoup d'ailleurs, car je m'en sert encore. Encore merci à toi pour ce travail, je vais le tester... Bien amicalement, Abdel. Le 17/05/2017 à 22:58, Maan ALOUN a écrit : salut JF, Abdel et tous le monde, je travaillais sur un petit logiciel explorateur de module pour python, je ne sais pas si vous l'avais l'occasion de le tester. vous le trouverez en pj. il se compose de 3 parties la première est une zone d'édition pour sélectionner un module parmi qui sont installés sur le système; la deuxième est une arborescence pour explorer le module choisis, il sufi de taper entré pour consulter l'aide sur l'élément en cour; la troisième est un petit éditeur de code je vous laisse tester. Merci -- De : "Jean-FrançoisColas"Date : mardi 16 mai 2017 20:53 à : Objet : [progliste] Re: WxPython et touches du clavier Hello Abdel, Thanks again. en complément de ton message, j'ai ressorti un des "tutos" que j'ai sur WxPython, dont le titre est : Programmer des interfaces graphiques avec le framework open source wxPython - Club d'entraide des développeurs francophones Je n'ai pas d'URL car je ne l'ai qu'en local. Il insiste, au moins au début, sur la manière d'exploiter la doc de WXWidgets en montrant comment les en-têtes de classes C++ se transposent en WxPython. C'est le premier tuto que j'avais récupéré. Pas forcément le plus facile, mais qui prend plutôt de" la valeur avec le temps. Bonne soirée, J.-F. Le 16/05/2017 18:50, Abdel a écrit : De rien JF, Pour connaitre les différentes méthodes et attributs des objets du module wx, je te propose ce qui suit : Comme du côté de chez NVDA, le module wx est intégré, il te suffit d'ouvrir la console Python de NVDA avec NVDA + Contrôle + Z. Ensuite, inutile d'importer le module wx, il est importé par défaut dans la console. Tape wx, suivi d'un point, puis réalise 2 tabulations. La liste complète des méthodes et attributs du module wx devrait s'afficher devant toi, tu pourras circuler à l'intérieur avec tes flèches verticales. Cette liste reconnait également lâauto complétion, c'est à dire que si tu écrit wx.WXK et que tu tabules 2 fois, tu auras toute la liste des constantes des touches intégrées dans le module. Si parmi toutes ces méthodes et attributs, il y en a une qui retient ton attention, valide sur entrée pour l'insérer, puis help(taLigne) pour consulter l'aide. Pour avoir les méthodes et attributs de la classe wx.Frame, tape simplement wx.Frame, suivi d'un point, puis 2 tabulations. Tu pourras le faire pour toute les classes du module wx ou n'importe quel autre module... Bien amicalement, Abdel. Le 15/05/2017 à 21:10, Jean-François Colas a écrit : Hello Abdel et tous, Merci pour cette page. Elle a répondu tout à fait à mon interrogation. Je n'ai pas encore appliqué sur mon code, mais le code du programme me laisse bon espoir. Après ça, faudra quand même que je me trouve du temps pour prendre en main la circulation dans la doc Wx, parce que les attributs des différents objets, ne s'inventent pas... Bonne soirée, J.-F. Le 14/05/2017 11:59, Abdel a écrit : Coucou JF, Généralement, une