Drop sur NSImageCell

MickMick Membre

Bonjour à  tous,


 


J'ai besoin d'un conseil de méthode sur la façon de gérer un drag&drop par une tableView contenant des NSImageCell (ceci peut éventuellement être modifié en custom cell si besoin). L'idée est de glisser une image quelconque (jpeg, gif ...) sur une ligne de la table. A ce moment, je dois appeler une méthode qui doit créer une image d'une certaine taille à  partir de l'image source, et modifier le modèle de donnée (coreData : attribut de type "data") en conséquence. La tableView est peuplée via dataSource.


 


Avez-vous des pistes pour faire ce genre de choses ?


 


 


Réponses

  • AliGatorAliGator Membre, Modérateur
    Hello !

    Heu y'a tout plein de docs sur le Drag & Drop dans la doc Apple, non ?
    T'es allé regardé au moins ? (Genre comme ça)

    Et sinon qu'as-tu essayé ? Qu'est ce qui te pose problème ? Le Drag & Drop ? Le resize de l'image ? La modification dans CoreData ? Autre ?
  • MickMick Membre

    En fait, il fallait juste checher au bon endroit, à  savoir dans  NSTableViewDataSource !! Il y a des méthodes qui permettent de gérer le drag & drop assez facilement ! Je pars là -dessus, avec stockage des données sous forme d'un NSData qui est dans le modèle de données. Est-ce "propre" ou faut-il plutôt stoker ça de façon "externe" ?


  • Je recherche, toujours au sujet des drag&drop, de la doc sur ce qui est mis dans le pasteBoard lors d'une sélection de cellules d'un tableau (iwork, openoffice ou office par ex) => Comment sont encapsulées les données ? Comment les exploiter dans une appli ? (ex, on sélectionne une liste de noms, on drag&drop vers une NSTableView, et on récupère les noms un à  un : mais encore faut-il dsavoir comment les données sont créées dans le presse papier ..)


     


    @ali : Je ne demande pas la "réponse" à  mon problème, mais la stratégie à  adopter compte-tenu de l'expérience de chacun !


  • CéroceCéroce Membre, Modérateur
    juillet 2013 modifié #5

    En gros, il y a deux cas à  distinguer:


     


    1) on veut copier-coller des données en interne de l'application. Par exemple dans Numbers, copier des cellules et les coller ailleurs.


    Dans ce cas, l'application va écrire dans le pasteboard une représentation interne (en général, un arbre d'objets archivé). L'idée est de conserver toutes les infos.


     


    2) on veut exporter des données vers d'autres applications


    Dans ce cas-là , on va utiliser des formats génériques afin que les autres applis puissent les relire. On va d'ailleurs inclure les données dans plusieurs formats. Par exemple, une appli de dessin vectoriel écrire du SVG, du PDF, et enfin un ou plusieurs formats bitmap, par ex. PNG et TIFF.


     


    Je ne me rappelle plus les détails d'implémentation, mais en gros, il faut aller voir les -[types] des données écrites dans le pasteboard, et prendre le plus riche.


     


    Pour reprendre le cas de Numbers, il va peut-être mettre du HTML et du texte séparé par des tabulations. Le HTML contient plus d'informations de formatage, donc si ton appli le lit, tant mieux, mais en dernier recours, il te reste de format texte archi-universel.


  • Ok, je vais tester en enregistrant ma vue pour les types :


    [_table registerForDraggedTypes:[NSArray arrayWithObjects:NSHTMLPboardType, NSRTFPboardType,nil]]

    Et ... je vois ce que j'obtiens au drop. Ok. Je teste ça. Merci Céroce.


Connectez-vous ou Inscrivez-vous pour répondre.