home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / Apps / SoundApps / SimpleSoundMixingExample / Source / DADTextField.m < prev    next >
Encoding:
Text File  |  1995-06-12  |  2.0 KB  |  92 lines

  1.  
  2. #import "DADTextField.h"
  3.  
  4. @implementation DADTextField
  5.  
  6. - initFrame:(const NXRect *)r
  7. {
  8.     const char  *WDRAG_PBTYPE[] = { NXFilenamePboardType, NULL};
  9.  
  10.  
  11.     [super initFrame:r];
  12.     [self registerForDraggedTypes:WDRAG_PBTYPE count:1];
  13.     
  14.     return self;
  15. }
  16.  
  17. // the receptor gets sent this message when the object is dragged into
  18. // the File window, and when it is unarchived from the nib file.
  19. - awake
  20. {
  21.   const char  *WDRAG_PBTYPE[] = { NXFilenamePboardType, NULL};
  22.  
  23.  
  24.   [super awake];
  25.   [self registerForDraggedTypes:WDRAG_PBTYPE count:1];
  26.  
  27.   return self;
  28. }
  29.  
  30.  
  31.  
  32. ////////////////////////////////////////////////////////////////////
  33. //            Dragging stuff
  34. ///////////////////////////////////////////////////////////////////
  35.  
  36.  
  37. - (NXDragOperation)draggingEntered:(id <NXDraggingInfo>)sender
  38. {
  39.     Pasteboard    *pboard;
  40.     const NXAtom  *theType;
  41.  
  42.  
  43.     pboard = [sender draggingPasteboard];
  44.     theType = [pboard types];
  45.  
  46.     if (*theType != NXFilenamePboardType)
  47.     {  fprintf(stderr, "Right type: acknowledging dragging starting...\n");
  48.        fflush(stderr);
  49.        return NX_DragOperationCopy;
  50.     }
  51.     fprintf(stderr, "Wrong type: unable to acknowledge dragging starting.\n");
  52.     fflush(stderr);
  53.  
  54.     return NX_DragOperationNone;
  55. }
  56.  
  57. - (NXDragOperation)draggingUpdated:(id <NXDraggingInfo>)sender
  58. {
  59.     return NX_DragOperationCopy;
  60. }
  61.  
  62.  
  63. - (BOOL)performDragOperation:(id <NXDraggingInfo>)sender
  64. {
  65.     Pasteboard    *pboard;
  66.     char          *argv;
  67.     int           len;
  68.     const NXAtom  *theType;
  69.  
  70.  
  71.     pboard = [sender draggingPasteboard];
  72.     theType = [pboard types];
  73.  
  74.     if (*theType != NXFilenamePboardType)
  75.     {  if ([pboard readType:NXFilenamePboardType data:&argv length:&len] == nil)
  76.        {  fprintf(stderr, "unable to read filename from pasteboard.\n"); fflush(stderr);
  77.       return NO;
  78.        }
  79.        else
  80.        {  [self setStringValue:(const char *)argv];
  81.       [self display];
  82.           return YES;
  83.        }
  84.     }
  85.     else
  86.     {  fprintf(stderr, "The type of the dragged object isn't a filename.\n"); fflush(stderr);
  87.        return NO;
  88.     }
  89. }
  90.  
  91. @end
  92.