Mathieu Virbel avatar Mathieu Virbel committed b4d02ac

Clean previous mac_scrap.py using pyobj, in favor of a native implementation

Comments (0)

Files changed (3)

     import numpy
     import OpenGL.GL
     import pygame.macosx
-    import pygame.mac_scrap
     import pygame.bufferproxy
     import pygame.colordict
     import pygame._view

lib/mac_scrap.py

-#
-# These methods are called internally by pygame.scrap
-#
-from AppKit import *
-from Foundation import *
-
-import sys
-import tempfile
-import pygame.image
-from pygame.locals import SCRAP_TEXT, SCRAP_BMP, SCRAP_SELECTION, SCRAP_CLIPBOARD
-from cStringIO import StringIO
-from pygame.compat import unicode_
-
-ScrapPboardType = unicode_('org.pygame.scrap')
-
-
-err = "Only text has been implemented for scrap on mac. See lib/mac_scrap.py to debug."
-
-
-
-def init():
-    return 1
-
-def get(scrap_type):
-    board = NSPasteboard.generalPasteboard()
-    
-    if 0:
-        print (board.types)
-        print (dir(board.types))
-        print (dir(board))
-        print (board.__doc__)
-
-    if scrap_type == SCRAP_TEXT:
-        return board.stringForType_(NSStringPboardType)
-    elif 1:
-        raise NotImplementedError(err)
-
-
-    elif 0 and scrap_type == SCRAP_BMP:
-        # We could try loading directly but I don't trust pygame's TIFF
-        # loading.  This is slow and stupid but it does happen to work.
-        if not NSImage.canInitWithPasteboard_(board):
-            return None
-        img = NSImage.alloc().initWithPasteboard_(board)
-        data = img.TIFFRepresentation()
-        rep = NSBitmapImageRep.alloc().initWithData_(data)
-        if rep is None:
-            return None
-
-        # bug with bmp, out of memory error... so we use png.
-        #data = rep.representationUsingType_properties_(NSBMPFileType, None)
-        data = rep.representationUsingType_properties_(NSPNGFileType, None)
-        bmp = StringIO(data)
-        return pygame.image.load(bmp, "scrap.png")
-    #elif scrap_type in board.types:
-    elif scrap_type == SCRAP_BMP:
-        return board.dataForType_(scrap_type)
-    else:
-        return board.stringForType_(scrap_type)
-
-def put(scrap_type, thing):
-    board = NSPasteboard.generalPasteboard()
-    if scrap_type == SCRAP_TEXT:
-        board.declareTypes_owner_([NSStringPboardType, ScrapPboardType], None)
-        if isinstance(thing, unicode):
-            text_thing = thing
-        else:
-            text_thing = unicode(thing, 'utf-8')
-        board.setString_forType_(text_thing, NSStringPboardType)
-        board.setString_forType_(unicode_(''), ScrapPboardType)
-    elif 1:
-        raise NotImplementedError(err)
-
-
-
-
-
-    elif 0 and scrap_type == SCRAP_BMP:
-        # Don't use this code... we put the data in as a string.
-
-        #if type(thing) != type(pygame.Surface((1,1))):
-        #    thing = pygame.image.fromstring(thing, len(thing) * 4, "RGBA")
-
-
-        # This is pretty silly, we shouldn't have to do this...
-        fh = tempfile.NamedTemporaryFile(suffix='.png')
-        pygame.image.save(thing, fh.name)
-        path = fh.name
-        if not isinstance(path, unicode):
-            path = unicode(path, sys.getfilesystemencoding())
-        img = NSImage.alloc().initByReferencingFile_(path)
-        tiff = img.TIFFRepresentation()
-        fh.close()
-        board.declareTypes_owner_([NSTIFFPboardType, ScrapPboardType], None)
-        board.setData_forType_(tiff, NSTIFFPboardType)
-        board.setString_forType_(unicode_(''), ScrapPboardType)
-    elif scrap_type == SCRAP_BMP:
-        
-        other_type = scrap_type
-        board.declareTypes_owner_([other_type], None)
-        board.setData_forType_(thing, other_type)
-
-    else:
-        other_type = scrap_type
-        if 0:
-            board.declareTypes_owner_([NSStringPboardType, other_type], None)
-            board.setString_forType_(text_thing, NSStringPboardType)
-        elif 0:
-            board.declareTypes_owner_([other_type], None)
-            #board.setString_forType_(thing, other_type)
-            board.setData_forType_(thing, other_type)
-        else:
-            board.declareTypes_owner_([NSStringPboardType, other_type], None)
-            board.setString_forType_(thing, NSStringPboardType)
-
-        #board.setData_forType_(thing, other_type)
-
-
-
-
-
-def set_mode (mode):
-    # No diversion between clipboard and selection modes on MacOS X.
-    if mode not in [SCRAP_SELECTION, SCRAP_CLIPBOARD]:
-        raise ValueError("invalid clipboard mode")
-
-def contains (scrap_type):
-    return scrap_type in NSPasteboard.generalPasteboard ().types ()
-
-def get_types ():
-    typelist = []
-    types = NSPasteboard.generalPasteboard ().types ()
-    for t in types:
-        typelist.append (t)
-    return typelist
-
-def lost ():
-    board = NSPasteboard.generalPasteboard ()
-    return not board.availableTypeFromArray_ ([ScrapPboardType])
     /*
      * Only initialise these functions for ones we know about.
      *
-     * Note, the macosx stuff is done in pygame/__init__.py 
-     *   by importing pygame.mac_scrap
+     * Note, the macosx stuff is done in sdlosx_main.m 
      */
 #if (defined(X11_SCRAP) || defined(WIN_SCRAP) || defined(QNX_SCRAP) \
      || defined(MAC_SCRAP))
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.