Ce forum est en partie financé par l’affichage de publicités. Merci de désactiver votre bloqueur de publicités pour nous permettre de continuer à fournir ce service.

Plug-in pour menu contextuel

Discussion dans 'Développement Mac' créé par _gromit_, 7 Août 2003.

  1. _gromit_

    _gromit_ Membre confirmé

    Inscrit:
    15 Mai 2000
    Messages:
    458
    J'aime reçus:
    5
    Bonjour à tous,

    je souhaite développer un Plug-in pour menu contextuel en Objective-C (de préférence) qui se glisserait dans ~/Library/Contextual Menu Items/
    j'ai fait quelques recherches sur internet et je n'ai trouvé ni de documentation Apple, ni de projet OpenSource (pouvant servir d'exemple) sur ce sujet

    j'ai bien trouvé le Contextual Menu Workshop, mais celui-ci ne marche qu'avec Code Warrior (que je ne possède pas [​IMG])

    Est-ce que quelqu'un a un exemple ou une documentation en stock ?

    d'avance, [​IMG]
     
  2. Manu

    Manu Membre d’élite
    Club MacG

    Inscrit:
    31 Mai 2000
    Messages:
    1 743
    J'aime reçus:
    204
  3. _gromit_

    _gromit_ Membre confirmé

    Inscrit:
    15 Mai 2000
    Messages:
    458
    J'aime reçus:
    5
    merci pour ta réponse, ça confirme ce que je craignais : les plug-ins pour menu contextuels sont faits en carbon [​IMG]
     
  4. Manu

    Manu Membre d’élite
    Club MacG

    Inscrit:
    31 Mai 2000
    Messages:
    1 743
    J'aime reçus:
    204
    Je ne me suis pas trop penché sur le problème, mais il me semble plutôt que ce sont les CoreServices qui sont utilisés. Ces Apis offrent des services au environnements Cocoa et Carbon. D'ailleurs les CoreFoundation qui en sont une sous couche, sont très inspirés de la Foundation Kit de Cocoa. Ils permettent à Carbon de disposer de certaines fonctionnalités avancées de Cocoa sans utiliser directement les apis. Ex CFString équivaut à NSString, etc..
     
  5. brunor

    brunor Nouveau membre

    Inscrit:
    18 Mars 2003
    Messages:
    9
    J'aime reçus:
    0
    Il existe un "sample code" sur le site de Apple pour créer un plugin de menu contextuel sous X.
    Ce code se compile sous MetroWerk et sous PB.
    C'est ici : Sample Code Apple.
     
  6. _gromit_

    _gromit_ Membre confirmé

    Inscrit:
    15 Mai 2000
    Messages:
    458
    J'aime reçus:
    5
    hé bé... encore un truc de plus à apprendre [​IMG]

    merci à tous les deux pour vos réponses [​IMG]
     
  7. _gromit_

    _gromit_ Membre confirmé

    Inscrit:
    15 Mai 2000
    Messages:
    458
    J'aime reçus:
    5
    Bon, je refais monter parce qu'après avoir abandonné plusieurs fois, je suis à nouveau motivé, et j'aimerais bien arriver à quelque chose :zen:

    Alors, j'ai bien compris l'exemple d'Apple grâce au tutoriel de MacDevCenter, mais il s'agit à mon avis de Carbon et je souhaiterais charger une classe en Objective-C qui utilise les API cocoa. Alors, est-ce possible ? Dans les Sample Code d'Apple, l'exemple sur "Cocoa in carbon" utilise un Bundle Cocoa. Est-on obligé de passer par là ou peut-on rester dans le même bundle ?
     
  8. tatouille

    tatouille Vétéran

    Inscrit:
    1 Juin 2004
    Messages:
    5 174
    J'aime reçus:
    494
    en effet les methodes "contextual menu" sont en carbon

    apple SDK : ftp://ftp.apple.com/developer/Development_Kits/ContextualMenuMgr_1.0.3.sit.hqx

    mais rien ne t'empeche d'acceder au methode carbon puis d'utiliser de l'obj-c

    http://developer.apple.com/samplecode/CarbonCocoaTempConverter/CarbonCocoaTempConverter.html

    je me suis fait un petit plug pour rajouter "Make Symlink" , "Move to", "Browse"
    mais c'est un peu merdique :D :D (plantage du finder)

    j'ai pas fini la bidouille l'objectif étant de rajouter les icons aussi

    je pense que tu veux faire un truc un peu similaire ?


    :zen: :zen: :zen:
     
  9. _gromit_

    _gromit_ Membre confirmé

    Inscrit:
    15 Mai 2000
    Messages:
    458
    J'aime reçus:
    5
    merci pour les pistes

    En fait, j'ai plusieurs idées en tête, mais la plus simple à réaliser serait un item "Effacer le CD-RW" car ça manque vraiment au Finder et il y a un exemple tout fait en Cocoa pour effacer un CD fait par Apple. Donc il suffit d'accéder à cette classe en Cocoa depuis le plug-in en carbon...

    J'ai bien quelques bases en Objective-C, de quoi me débrouiller... mais là je suis largué :mouais:
     
  10. _gromit_

    _gromit_ Membre confirmé

    Inscrit:
    15 Mai 2000
    Messages:
    458
    J'aime reçus:
    5
    Bon, finalement j'ai quand même réussi à faire quelque chose avec le Sample Code CocoaInCarbon.
    Pour les curieux, ça se passe sur mon site :zen:
     
  11. ceslinstinct

    ceslinstinct Membre d’élite
    Club MacG

    Inscrit:
    10 Août 2004
    Messages:
    2 069
    J'aime reçus:
    111
    Bonsoir

    Une réponse que vous allez trouver bète, mais voici.
    Pour faire des tests avant d'écrire un plung-in pourquoi ne pas tester BigCat qui permet d'ajouter des commandes dans le menu contextuel.
    Ils peuvent être écrit en AppleScript ou en scripts de shell.

    J'ai vu ca sur le journal AVosMac N° 38 de mars 2004

    Http://ranchero.com/bigcat/
    Avec safari chez moi il à refusé mes avec bigcat sur Google il l'a trouvé.

    Je suis pas programmeur, alors si ma réponse est nulle excusez moi.

    Salut
     
  12. _gromit_

    _gromit_ Membre confirmé

    Inscrit:
    15 Mai 2000
    Messages:
    458
    J'aime reçus:
    5
    Salut :)

    Ton idée n'est pas bête, mais il se trouve que l'on ne peut pas tout faire en AppleScript ou avec les scripts shell. Dans certains cas, on peut très bien s'en sortir. Mais par exemple pour mon EraseCMPlugIn, je ne pense pas que j'aurais pu arriver au même résultat avec un script : il me fallait passer par Cocoa.

    Et puis, il y a aussi la fierté d'avoir réussi à faire ça soi-même d'un bout à l'autre et de n'avoir qu'un fichier à installer au final pour que le Plug-In fonctionne :D

    je ne pense pas que ce forum soit réservé aux programmeurs :zen:
    de temps à autre, il est très utile d'avoir un avis extérieur pour remettre les choses en place :up:
     
  13. ceslinstinct

    ceslinstinct Membre d’élite
    Club MacG

    Inscrit:
    10 Août 2004
    Messages:
    2 069
    J'aime reçus:
    111
    Bonsoir

    Avec AppleScript on peut faire beaucoup de choses, mais Cocoa c'est la Ferrari de formule 1 par apport a AppleScript qui est une 2 cv avec
    350 000 Km au compteur.

    Je vais tester ce programme, pour voir si c'est impossible.

    Par contre Cocoa donne des résultats qu'en AppleScript je suis incapable de trouver.

    exemple:
    Aide-mémoire: 276 Ko sur le disque
    Le programme 216 217 octets.

    Avec la calculette je divise 216217 / 1024 = 211,14 Ko (pour moi 1 Ko c'est 1024 octets et non 1000 octets comme le prétende les fabricants de DD, et vendeurs).
    De toute façon en utilisant 1000 au lieu de 1024, le résultat est le même.

    Donc je reconnait que Cocoa est bien superieur a AppleScript.

    En calcul donc AppleScript est nul

    Salut, a un prochain post.
     
  14. _gromit_

    _gromit_ Membre confirmé

    Inscrit:
    15 Mai 2000
    Messages:
    458
    J'aime reçus:
    5
    Alors, officiellement 1 Ko c'est 1000 octets... je suis pas très d'accord là dessus, mais c'est la norme, il faut d'y plier :nailbiting:

    Sinon la différence de taille entre la taille réelle du programme et la taille qu'il prend sur le disque dur est due à la taille minimale des blocs de ton disque dur. Ton disque dur est divisé en un certain nombre de blocs. Ces blocs sont indivisibles, et un fichier sera stocké sur plusieurs blocs dont un bloc qui ne sera pas plein.
    De plus, une application Cocoa est souvent sous la forme d'un "bundle" c'est-à-dire d'un dossier contenant plusieurs petits fichiers. La place perdue due à la taille des blocs (blocs qui sont trop grands comparés aux petits fichiers que l'on veut stocker dedans) va donc s'accumuler avec ces petits fichiers.

    Cela n'a rien à voir avec AppleScript et Cocoa :zen:
     
    ceslinstinct aime ça.
  15. Spyro

    Spyro Vétéran
    Club MacG

    Inscrit:
    19 Juillet 2001
    Messages:
    5 428
    J'aime reçus:
    866
    La norme en SI c'est que: kilo = k minuscule = 1000 et c'est très bien. :)
    En informatique ils ont pris l'habitude d'utiliser 1024 pour des raisons pratiques, et ils écrivent ça avec un K majuscule, et c'est très bien aussi. ;)

    Par contre pour les unités supérieures, c'est le flou total et je ne saurais dire si les fabricants de disques font preuve de respect d'une norme ou de trichoterie en utilisant des facteurs 1000 au lieu de 1024, comme le fait le Finder lui, qui semble être plus au courant des habitudes en informatique ;) :rolleyes:
     
  16. ceslinstinct

    ceslinstinct Membre d’élite
    Club MacG

    Inscrit:
    10 Août 2004
    Messages:
    2 069
    J'aime reçus:
    111
    Bonjour

    http://sebsauvage.net/comprendre/unites/
    http://www.adbdp.asso.fr/outils/infogenerale/octets.htm

    Merci _gromit_ pour les bundles, j'ai enfin une réponse.

    @+
     
  17. joupil

    joupil Nouveau membre

    Inscrit:
    20 Mars 2007
    Messages:
    1
    J'aime reçus:
    0
    Bonjour,
    j'aimerais aussi d'envelopper un menu contextuel, mais j'aurais besoin de reccuperer le texte sélectionné par l'utilisateur.
    J'ai vu que frontierCM fessais cela, par contre le code source n'est plus disponible sur le site (Erreur 404). Si quelqu'un a sur son disque dur le code ou tous autre code source correspondants à mon problème, je serais le plus heureux des hommes.

    Merci beaucoup
     
  18. tatouille

    tatouille Vétéran

    Inscrit:
    1 Juin 2004
    Messages:
    5 174
    J'aime reçus:
    494
    oui depuis toujours mais rien ne t'empeche de bind une class obj-c dessus
     
  19. tatouille

    tatouille Vétéran

    Inscrit:
    1 Juin 2004
    Messages:
    5 174
    J'aime reçus:
    494

    pardon pas vu :D
     
Chargement...