Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Apple Event Managet et get URL

10 réponses
Avatar
pere.noel
je cherhe à implémenter dans une appli le get URL d'Apple Event Manager.

bon coté plist c'est ok, quand je tape "bmkm:blahblah" sur Safari
(marche pas avec Firefox) mon appli s'ouvre.

ensuite j'enregistre cette appli auprès de l'event manager :

@appleEventManager=OSX::NSAppleEventManager.sharedAppleEventManager

@appleEventManager.setEventHandler_andSelector_forEventClass_andEventID(
self, 'handleGetURLEvent:withReplyEvent:', 'gurl'.unpack('L')[0].to_i,
'gurl'.unpack('L')[0].to_i)

toujours dans le jargon ruby.

j'ai donc une méthode :

def handleGetURLEvent_withReplyEvent(event, replyEvent)
p "handleGetURLEvent_withReplyEvent(event, replyEvent)"
end


qui est sensée (ici un simple print out) répondre à ces événements mais
cette fonction n'est jamais appellée.

alors peu-être que ce qui cloche et que je n'ai rien fait de spécial au
niveau IB ????

voila, si une âme généreuse peut m'apporte un peu de lumière dans mes
profondes ténèbres...
--
une bévue

10 réponses

Avatar
luc
Une bévue wrote:

@appleEventManager.setEventHandler_andSelector_forEventClass_andEventID(
self, 'handleGetURLEvent:withReplyEvent:', 'gurl'.unpack('L')[0].to_i,
'gurl'.unpack('L')[0].to_i)


1. c'est 'GURL' et pas 'gurl', si je ne m'abuse.
2. les to_i ne servent à rien.
3. Toutes ces questions n'ont rien à faire ici. fcsm.prog est fait pour
ça.

--
Luc Heinrich

Avatar
Patrick Stadelmann
In article <1hbqd96.1wi11w41t1ee3qN%,
(Une bévue) wrote:

bon coté plist c'est ok, quand je tape "bmkm:blahblah" sur Safari
(marche pas avec Firefox) mon appli s'ouvre.


Je suppose que c'est comme du temps de Netscape : il utilise sa propre
liste, modifiable dans les préférences.

Pour le reste, il y a un exemple quelque part dans un "sample code" chez
Apple.

Patrick
--
Patrick Stadelmann

Avatar
pere.noel
Luc Heinrich wrote:

1. c'est 'GURL' et pas 'gurl', si je ne m'abuse.


oui, j'avais lu ça par googlisation sur une mail-list, mais le tuyau
"'gurl'.unpack('L')[0]" m'ayant té donné par Jonathan Paisley...
2. les to_i ne servent à rien.


rajoutés par moi-même en me disant "ça mange pas de pain"...
3. Toutes ces questions n'ont rien à faire ici. fcsm.prog est fait pour
ça.


il n'y a pas si longtemps on m'a renvoyé, gentillement de *.prog à
*.x...
j'en fus tout mari ;-)

merci beaucoup, je regarde ce que ça donne asap et je me rencarde sur
d'où sort le *.unpack('L')[0] qui m'est tout à fait obscur...
--
une bévue

Avatar
pere.noel
Patrick Stadelmann wrote:

Je suppose que c'est comme du temps de Netscape : il utilise sa propre
liste, modifiable dans les préférences.


ah, bonne pioche, je vais y jeter un oeil...
non, je ne vois rien de ce coté-là des prefs mais je vais poser la
question du coté de "fr.comp.infosystemes.www.navigateurs", j'aimerais
bien que ce système soit compatible au moins en + avec firefox.

après tout il y a pas de raison...
Pour le reste, il y a un exemple quelque part dans un "sample code" chez
Apple.


oui, ça j'ai lu, le coté Obj-C ce qu'il me manquait surtout c'est la
syntaxe existe coté RubyCocoa, j'avoue ne pas avoir pigé d'où sort le
"#unpack('L')[0]"...
--
une bévue

Avatar
pere.noel
Luc Heinrich wrote:

1. c'est 'GURL' et pas 'gurl', si je ne m'abuse.


OUAIS, i'm happy to say : « it works ! » without any kind of
workaroundwhilepassingbythetop ;-)

un kir pour Messieur !
--
une bévue

Avatar
Patrick Stadelmann
In article <1hbqtf7.86ixmdg1pexwN%,
(Une bévue) wrote:

Patrick Stadelmann wrote:

Je suppose que c'est comme du temps de Netscape : il utilise sa propre
liste, modifiable dans les préférences.


ah, bonne pioche, je vais y jeter un oeil...
non, je ne vois rien de ce coté-là des prefs mais je vais poser la
question du coté de "fr.comp.infosystemes.www.navigateurs", j'aimerais
bien que ce système soit compatible au moins en + avec firefox.


Voir : http://kb.mozillazine.org/Register_protocol

Patrick
--
Patrick Stadelmann


Avatar
pere.noel
Patrick Stadelmann wrote:


Voir : http://kb.mozillazine.org/Register_protocol


merci pour l'info, apparemment c'est assez simple ça peut même
s'automatiser coté user (avec peut-être un peu d'acrobatie genre script
de gui...)

en tout cas si je tape maintenant :
bmkm:toto sur Firefox, mon appli "BookmarksMerge" est lancée et je
reçois bien le message :
"handleGetURLEvent_withReplyEvent(event, replyEvent)"

depuis la méthode du "même nom"...

fantastique !

=> YAPUKA...

je vais essayer de touver le path de "Sogudi" pour faire la même chose
pour le "protocole" man:
perso, sur linux, je n'ai jamais utilisé man: que sur konqueror, depuis
bien plus longtemps que sur mac os d'ailleurs, je pense même avant
l'existence de MacOS X...
--
une bévue

Avatar
luc
Une bévue wrote:

merci beaucoup, je regarde ce que ça donne asap et je me rencarde sur
d'où sort le *.unpack('L')[0] qui m'est tout à fait obscur...


String#unpack decode une chaine en fonction du format passé en paramètre
et retourne un tableau contenant les valeurs extraites. C'est très
pratique pour décoder du contenu binaire par exemple.

Dans ce cas précis, le 'L' correspond à "quatre caractères successifs
sont considérés comme un entier long non signé (endianess natif)". Et
comme unpack retourne un tableau, si tu veux utiliser la valeur (unique
dans ce cas) il faut l'extraire d'icelui, d'où le [0] (et comme la
tableau retourné contient déjà des Fixnum, le to_i est totalement
inutile).

Et qu'est-ce que ça vient faire ici tout ça ? C'est juste une moyen
simple de convertir une String en AEEventClass (qui n'est au final
qu'une simple valeur 32bits).

Et pour ton érudition, le contraire de String#unpack, c'est Array#pack,
tout aussi pratique :)

--
Luc Heinrich

Avatar
pere.noel
Luc Heinrich wrote:


String#unpack decode une chaine en fonction du format passé en paramètre
et retourne un tableau contenant les valeurs extraites. C'est très
pratique pour décoder du contenu binaire par exemple.

Dans ce cas précis, le 'L' correspond à "quatre caractères successifs
sont considérés comme un entier long non signé (endianess natif)". Et
comme unpack retourne un tableau, si tu veux utiliser la valeur (unique
dans ce cas) il faut l'extraire d'icelui, d'où le [0] (et comme la
tableau retourné contient déjà des Fixnum, le to_i est totalement
inutile).

Et qu'est-ce que ça vient faire ici tout ça ? C'est juste une moyen
simple de convertir une String en AEEventClass (qui n'est au final
qu'une simple valeur 32bits).

Et pour ton érudition, le contraire de String#unpack, c'est Array#pack,
tout aussi pratique :)


oui, merci, le coté ruby le unpack['L'] j'avais pigé, l'info qui me
manque toujours c'est, justement comment et où aurais-je pu, par
moi-même trouver cette info-là.

bon le GURL je l'avais trouvé, d'autres en ont parlé coté python, j'ai
mis gurl car c'est Jonathan Paisley qui m'a donné ce tuyau donc,
m'instimant d'un niveau nettement inférieur au sien en matière d'info...

mais bon j'ai un pb similaire avec une NSAlert que j'utilise en sheet
(je n'aime pas les fenêtres qui s'ouvrent partout, question
"cosmétique").

je voudaris passer dans l'argument "contextInfo" un objet et/ou une
méthode qui puisse dire à :
alertDidEnd_returnCode_contextInfo(alert, returnCode, contextInfo)

quoi faire (il ne suffit pas de savoir si l'utilisateur est d'accord ou
pas, encore faut'il savoir le contexte d'où la question a été posée)

donc j'ai regardé ce que me retourne contextInfo quand lors de l'appel
#beginSheetBlahblahblah je passe une string "le contexte info"

là je print ce que me retourne
"#alertDidEnd_returnCode_contextInfo(alert, returnCode, contextInfo)"
par :

p "contextInfo.class = #{contextInfo.class.to_s} contextInfo #{contextInfo.to_s}"

et ça me print :
contextInfo.class = OSX::ObjcPtr contextInfo #<OSX::ObjcPtr:0x3b3d4b8>"

j'imagine que "" veut dire Obj-C Pointer donc qqc comme un pointeur sur
l'endroit où se situe l'objet où vers une table qui dit où il est.

mais bon, perso je veux utliser ça pour une tâche très simple qqc comme
:

saveFile("/path/to/the/file/under/concern")

j'imagine que ça peut se faire, mais ne vois pas comment (je ne vois
d'ailleurs même pas comment retrouver ma string à partir de
"#<OSX::ObjcPtr:0x3b3d4b8>"), et que c'est même tout l'intérêt de cet
arg contextInfo.
--
une bévue

Avatar
pere.noel
Patrick Stadelmann wrote:


Voir : http://kb.mozillazine.org/Register_protocol


bon j'ai posé qq questions au dévelopeur de Sogudi il m'a répondu que
man est built-in firefox seulement la syntaxe est légérement différente
:

man plutil

et tu te retrouves sur la page :
<http://www.hmug.org/man/1/plutil.php>
--
une bévue