import sys
from . import xshm
from .modes import BaseDisplay
from io import StringIO
class Display(BaseDisplay):
def __init__(self, width, height, title, shm='yes'):
use_shm = not shm.startswith('n')
self.xdpy = xdpy = xshm.Display(width, height, use_shm)
self.pixmap = xdpy.pixmap
self.getppm = xdpy.getppm
self.putppm = xdpy.putppm
self.overlayppm = xdpy.overlayppm
self.close = xdpy.close
self.clear = xdpy.clear
self.flip = xdpy.flip
self.keyevents = xdpy.keyevents
self.mouseevents = xdpy.mouseevents
self.pointermotion = xdpy.pointermotion
if use_shm and not xdpy.shmmode():
print("Note: cannot use SHM extension (%dx%d), display will be slow." % \
(width, height), file=sys.stderr)
def selectlist(self):
if hasattr(self.xdpy, 'fd'):
from socket import fromfd, AF_INET, SOCK_STREAM
return [fromfd(self.xdpy.fd(), AF_INET, SOCK_STREAM)]
else:
return []
def htmloptionstext(nameval):
return '''
<%s> Use the shared memory extension<%s>
Note: Disable it for remote connections or old X servers
''' % (nameval("checkbox", "shm", "yes", default="yes"),
nameval("hidden", "shm", "no"))