[progliste] Re: UniversalSpeech javascript thunderbird

2017-05-27 Par sujet yannick

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

2017-05-27 Par sujet yannick

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

2017-05-27 Par sujet Jean-François Colas

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