Question

J'ai une application web que je suis portage à un widget de Dashboard OS X. L'application Web génère des données sur le côté client en utilisant JavaScript, puis, lorsque l'utilisateur veut enregistrer, l'envoie à un script côté serveur qui relaie le dos de données avec le Content-disposition: attachment; en-tête HTTP, le déclenchement d'une boîte de dialogue Enregistrer fichier dans la plupart des navigateurs.

J'ai essayé de dupliquer ce dans l'environnement du tableau de bord. Le Widget disparaît tout simplement. Je ne sais pas, mais je pense qu'il peut être fait naviguer au contenu inconnu.

Alors, comment puis-je déclencher une « boîte de dialogue Enregistrer le fichier » - ou, à défaut, utilisez aucune méthode pour enregistrer les données du Widget génère en tant que fichier

Était-ce utile?

La solution

Pour autant que je sais que ce n'est pas possible d'enregistrer un fichier à partir d'un widget Dashboard grâce à une boîte de dialogue « Enregistrer le fichier » parce que l'intention des widgets est d'afficher des informations (avec ou sans accès Internet), pour effectuer des calculs ou de contrôle applications.

Cependant, vous disposez de trois options pour stocker des données localement:

  1. stocker les données dans les préférences du widget. Définissez les données via le setPreferenceForKey méthode widget et récupérer avec le preferenceForKey méthode widgets. Ceci est seulement une option si les données appartient au widget et ne doit pas être accessible en dehors du widget. En outre la taille des données ne doit pas être trop grand.

  2. Exécuter des scripts dans la commande du système du widget. Tout langage de script peut être utilisé ici (sh, perl, ruby, python, AppleScript, ...).

  3. Ecrire un cacao / Objective-C à base plug-in widget de .

Autres conseils

La bonne façon de le faire est un plugin widget de cacao qui vous permettra d'utiliser une boîte de dialogue Enregistrer. La façon rapide de le faire est quelque chose comme ceci:

command = widget.system("/bin/bash -c 'cat - > ~/Desktop/test.txt'", yourHandler);
command.write( "some text" );
command.close();

Ceci indique bash à stdin chat dans un fichier sur le bureau, puis écrit à stdin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top