prendre en compte un drop dans le dock sans ouvrir un document
Chacha
Membre
Salut,
J'ai une appli multi-documents. D'habitude, quand je drag'n drop un fichier (qui va bien) sur l'icône du Dock, ça m'ouvre un nouveau document.
En revanche, j'aimerais bien qu'un certain type de fichier (de config en l'occurence) soit pris en compte, mais n'ouvre pas de document (ça ne doit avoir que l'effet de modifier la config générale de l'application).
Si je rajoute simplement ce type de fichier dans le DocumentType de la classe MyDocument de l'inspecteur de target, ça ne va pas.
Il y a une bidouille à faire ? Rajouter une ligne au tableau sus-cité ? Je ne sais pas trop (et le code doit être compatible Panther).
+
Chacha
J'ai une appli multi-documents. D'habitude, quand je drag'n drop un fichier (qui va bien) sur l'icône du Dock, ça m'ouvre un nouveau document.
En revanche, j'aimerais bien qu'un certain type de fichier (de config en l'occurence) soit pris en compte, mais n'ouvre pas de document (ça ne doit avoir que l'effet de modifier la config générale de l'application).
Si je rajoute simplement ce type de fichier dans le DocumentType de la classe MyDocument de l'inspecteur de target, ça ne va pas.
Il y a une bidouille à faire ? Rajouter une ligne au tableau sus-cité ? Je ne sais pas trop (et le code doit être compatible Panther).
+
Chacha
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ce que tu veux faire est un peu curieux, mais bon, je pense que pour empêcher la fenêtre de document de s'ouvrir, il suffit de retourner NO dans la méthode loadDataRepresentation pour le type de document du fichier de config.
Ouaip, c'est la première chose que j'ai essayée (dans -(BOOL) readFromFile:(NSString *)file ofType:(NSString *)aType) , mais dans ce cas, une joli message d'erreur prévient l'utilisateur que ça a foiré. or, ça n'a pas foiré !
-je crée une nouvelle sous-classe de NSDocument
-je lui crée un NIB quasi vide
-je rajoute une ligne pour lui dans le target inspector
ça fonctionne à peu près. Je dosi expérimenter un peu plus
[edit]
Ouais. C'est bizarre, le readFromFile est bien appelé, mais ensuite le chargement du document reste bloqué (j'ai rajouté une fenêtre dans le nib, elle n'apparaà®t jamais, et un deuxième drop ne donne rien)
[/edit]
Je me suis donc tourné vers une autre méthode plus logique : sous-classer NSDocumentController.
C'est assez amusant : on crée une sous-classe, et dans la doc d'Apple, ils expliquent où l'instancier pour que ce soit la première instance de NSDocumentController créée dans le programme. Et c'est la première instance qui devient le sharedDocumentController.
Et pourtant...
C'est très bizarre !
Ma sous-classe s'appelle MyDocumentController (original, non ?)
Et bien que je surcharge son init ou pas, quand elle est créée, on obtient un NSDocumentController et pas un MyDocumentController. Et pourtant son init est bien appelé.
Encore plus étrange :
Autre essai :
Bizarre tout ça. Si quelqu'un y voit clair...
+
Chacha
[edit]
Bon, j'ai finalement trouvé mon erreur, maintenant la sous-classe de NSDocumentController marche bien.
Par contre, ça ne résout toujours pas mon problème initial : moi ce que je veux, c'est déclencher une action grâce à un fichier déposé sur l'icône du Dock. Pour intercepter cette action, je pensais que le gestionnaire de documents était adapté, mais le problème, c'est que je ne veux PAS créer de document avec cette action. Donc les méthodes "openDocumentWithFile:..." doivent dans ce cas renvoyer nil, mais une erreur est alors présentée à l'utilisateur ! (et ce message d'erreur est levé dans une méthode privée de l'AppKit, ce qui fait que je ne peux pas me permettre de surcharger pour la contourner)
Je rappelle que le problème vient surtout du fait que le code doit être compatible Panther, donc je n'ai pas droit aux nouvelles méthodes de 10.4.
[/edit]
[tt]
- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag
[/tt]
Ouaaiiiis bien vu, je n'y avais pas pensé ! Bon, j'ai trouvé ma solution avec un delegate de NSApplication.
Merci !
+
Chacha