Ouverture multiple de fichiers

OlivierDOlivierD Membre
23:36 modifié dans API AppKit #1
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 ?

Réponses

  • mpergandmpergand Membre
    23:36 modifié #2
    Salut,

    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 ;)
  • OlivierDOlivierD Membre
    23:36 modifié #3
    Le problème c'est qu'une recette est déjà  (entre autre) une succession d'éléments dans une NSTableView.
    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 ??? ??? ???
  • mpergandmpergand Membre
    23:36 modifié #4
    Ok, next step :)

    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 ;)
  • OlivierDOlivierD Membre
    23:36 modifié #5
    Merci pour ton aide

    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
  • fouffouf Membre
    23:36 modifié #6
    Sinon, ce qui peut etre sympa c'est de creer une NSTabView avec tes recettes Ca te donnerais un truc un peu comme ca :

    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]
  • cbrandtcbrandt Membre
    23:36 modifié #7
    étant donné que les différentes vues de la tabview vont présenter la même interface mais avec des données différentes, je propose le NSPopUpMenu qui me semble peut-être plus approprié à  ce cas ?
  • fouffouf Membre
    23:36 modifié #8
    dans 1107001330:

    étant donné que les différentes vues de la tabview vont présenter la même interface mais avec des données différentes, je propose le NSPopUpMenu qui me semble peut-être plus approprié à  ce cas ?


    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  :o L'interface est magnifique.  ;)
Connectez-vous ou Inscrivez-vous pour répondre.