Ouverture multiple de fichiers
OlivierD
Membre
Bonjour,
Je suis bloqué dans mon projet d'application (Cocoa + Objective-C, document-based).
Je traite des fichiers XML, qui sont en fait des collections de fichiers simples XML.
Je m'explique : tous mes fichiers commencent par le drapeau <RECETTES> (au pluriel) et finissent par </RECETTES> (au pluriel). A l'intérieur, on peut trouver une ou plusieurs recettes, contenue(s) dans des drapeaux <RECETTE> ... </RECETTE> (au singulier).
Avant d'ouvrir un fichier, je ne sais donc pas s'il contiendra une seule ou plusieurs recettes. S'il n'en contient qu'une, pas de problème particulier. En revanche, s'ils en contient plusieurs, je voudrais pouvoir toutes les ouvrir dans des documents différents.
Mais comment à partir de ma classe (MBDocument : NSDocument) créer de nouveaux objets documents si je constate lors du parcours du fichier qu'il contient plusieurs recettes ? Je ne vois pas comment invoquer la méthode "openUntitledDocumentOfType" du NSDocumentController depuis mon document...
Des idées ?
Je suis bloqué dans mon projet d'application (Cocoa + Objective-C, document-based).
Je traite des fichiers XML, qui sont en fait des collections de fichiers simples XML.
Je m'explique : tous mes fichiers commencent par le drapeau <RECETTES> (au pluriel) et finissent par </RECETTES> (au pluriel). A l'intérieur, on peut trouver une ou plusieurs recettes, contenue(s) dans des drapeaux <RECETTE> ... </RECETTE> (au singulier).
Avant d'ouvrir un fichier, je ne sais donc pas s'il contiendra une seule ou plusieurs recettes. S'il n'en contient qu'une, pas de problème particulier. En revanche, s'ils en contient plusieurs, je voudrais pouvoir toutes les ouvrir dans des documents différents.
Mais comment à partir de ma classe (MBDocument : NSDocument) créer de nouveaux objets documents si je constate lors du parcours du fichier qu'il contient plusieurs recettes ? Je ne vois pas comment invoquer la méthode "openUntitledDocumentOfType" du NSDocumentController depuis mon document...
Des idées ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Donc, si ton fichier de recettes contient 10 recettes, tu veux ouvrir 10 fenêtres d'un coup ? Hum, t'es sûr de vouloir fait ça
Si tu te conformes à la structure de ton fichier, ton document devrait contenir un tableau des recettes de ce fichier (avec une NSTableView) et une vue affichant la recette sélectionnée dans ce tableau.
Enfin, c'est comme ça que je verrais les choses
Mais effectivement, je vais prendre ton idée (j'espère qu'il n'y aura pas de Royalties, c'est un freeware que je développe ) : s'il y a plus d'une recette, j'affiche une fenêtre NSAlert informant qu'il y a plusieurs recettes, et je propose à l'utilisateur d'en sélectionner une via une NSTableView, qui deviendra le document de travail.
Mais au fait, on peut personnaliser une NSAlert ??? ??? ???
Bien sûr il est possible d'afficher plusieurs recettes, chacune dans sa propre fenêtre, mais il ne s'agit pas de créer un nouveau document, mais seulement une vue (fenêtre) supplémentaire, te permettant d'afficher une partie de ce document, ici une recette.
Cette nouvelle fenêtre auxiliaire sera reliée à la fenêtre principale du document:
/ Fenêtre Recette1
Fenêtre principale (document) --- Fenêtre Recette2
\ Fenêtre Recette3
C'est à dire que si tu fermes la fenêtre principale, les fenêtres auxillaires se fermeront aussi, l'inverse n'étant pas vrai.
Pour cela il faut créer un NSWindowController pour chacunes des fenêtres auxiliaires, bon je l'ai déjà fait, mais en Java, donc j'ai pas de code à te proposer, mais je n'ai aucun doute, les pro ObjC vont te montrer comment faire
En fait j'ai déjà créé une sous-classe de NSWindowController pour gérer la fenêtre principale de mon document, donc pas trop de souci ici.
Mais, à la reflexion, avoir plusieurs recettes ouvertes en même temps n'a pas forcément de sens. Je vais plutôt garder ma classe MBDocument pour une recette simple. En plus, un document peut avoir deux fenêtres différentes, donc ça surchargerait trop.
Du coup, mon workflow devient :
- Ouverture du fichier <RECETTES> </RECETTES>
- Test sur le nombre de recettes contenues
* s'il n'y a qu'une recette, traitement normal du document ;
* s'il y a plus d'une recette, affichage d'une feuille attachée à la fenêtre du document, feuille contenant une NSTableView avec la liste des n recettes contenues dans le fichier. Sélection par l'utilisateur dans la NSTableView de la recette sur laquelle il veut travailler, puis retour dans le traitement normal.
Bon, il ne me reste plus qu'à me pencher sur les Sheets :P
Je vais ptet pas decrire comment faut faire tout de suite, c'est un peu long, mais si quelqu'un veux, n'hesitez pas.
Au fait, Bienvenue et bonne degustation OlivierD
[Fichier joint supprimé par l'administrateur]
C'est vrai c'est mieux. J'ai assez peu de gout pour les interfaces
En fait, OlivierD devrait faire une interface un peu a la XCode, avec un selecteur de fichier.
Sinon, ya la solution d'ouvrir Terminal et de taper emacs recette.miam L'interface est magnifique.