Comment créer un AppleScript avec un menu déroulant sans Xcode?


8

Comment créer un AppleScript qui affiche un menu déroulant sans utiliser Xcode?

Réponses:


1

Il n'y a pas de concept intégré de menu dans les dialogues-alertes dans le langage AppleScript.

Le plus proche que vous pourriez faire serait de nommer certains fichiers fictifs (dans un dossier temporaire) avec l'action appropriée et de demander à l'utilisateur de choisir le fichier étiqueté avec l'action que vous souhaitez effectuer.

open folder blah
  with selected file bah
    do whatever

Une horrible "solution" à un problème qui a besoin d'un menu cacao - que vous le fassiez dans Xcode ou quelqu'un d'autre le fait - Xcode / IB est l'outil qui crée un menu . MacRuby est un bon moyen de créer un script pour une application qui a besoin d'une interface utilisateur plus complète qu'AppleScript. Vous n'avez pas besoin de Xcode / IB pour créer une application à partir d'un script pur.

Vous pouvez créer une NIB à l'aide d'Interface Builder et tout écrire à l'aide d'AppleScript, mais la nib définit le menu lui-même - pas AppleScript (même si AppleScript peut remplir ou supprimer les éléments de menu au moment de l'exécution).


11

Une option serait d'utiliser CocoaDialog **:

set l to {"aa", "bb", "cc"}
set choices to ""
repeat with x in l
    set choices to choices & quoted form of x & " "
end repeat
set dialog to paragraphs of (do shell script "/Applications/CocoaDialog.app/Contents/MacOS/CocoaDialog" & " standard-dropdown --title title --text text --items " & choices)
if item 1 of dialog is "2" then return -- pressed cancel button
item ((item 2 of dialog) + 1) of l

Vous pouvez également simplement utiliser choose from list:

choose from list {"aa", "bb", "cc"} with title "Title" with prompt "Please choose" default items "bb" with multiple selections allowed


** L'URL d'origine de ce dépôt Github par mstratmana changé. D'après les recherches, il semble que CocoaDialog soit passé à une organisation. Voici les nouveaux changements:


1

De plus, si vous avez juste besoin d'une liste parmi laquelle choisir, vous pouvez également faire

choose from list listYouDefined with prompt "Choose from the list."

Google "AppleScript Choisissez dans la liste".


1

Je comprends que c'est une vieille question mais comme la meilleure réponse votée le dit dans la documentation de CocoaDialog 2:

Les téléchargements ne fonctionnent pas Les téléchargements pour cocoadialog 2 ne sont plus disponibles. Cela est principalement dû en partie aux divers changements et au manque de stockage permanent au fil des ans.

et 3 ne vient pas avant le printemps / été 18 Je cherchais d'autres alternatives et j'ai trouvé Pashua :

entrez la description de l'image ici (photo prise sur le site)

Dans la documentation, cela s'appelle popup:

Example: Using popup
p.type = popup
p.label = Example popup menu
p.width = 310
p.option = Popup menu item #1
p.option = Popup menu item #2
p.option = Popup menu item #3
p.default = Popup menu item #2

Capture d'écran:

entrez la description de l'image ici

Github repo

Après l'avoir utilisé, j'ai découvert que vous pouvez installer Pashua.app dans votre répertoire d'application ou que vous pouvez intégrer Pashua dans votre application. Je ne suis pas l'auteur de cela, mais j'avais besoin d'une solution de base pour une interface graphique et cela n'a pas été mentionné.


0

Vous n'avez pas besoin de Xcode pour AppleScript. Ouvrez simplement l'éditeur AppleScript dans Applications / Utilitaires (raccourci du Finder pour le dossier Utilitaires: ⌘ Command+ Shift+ U). Il existe des exemples de code pour les menus déroulants sur MacScripter: menu déroulant .


J'ai déjà regardé ce lien. Le script nécessite une interface NIB / Xcode.
daviesgeek

C'est un excellent exemple de la façon dont AppleScript peut modifier les éléments de menu au moment de l'exécution :-)
bmike

Oui, mais pas exactement ce que je recherche.
daviesgeek
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.