Spaces:
Runtime error
Runtime error
# Xlib.support.connect -- OS-independent display connection functions | |
# | |
# Copyright (C) 2000 Peter Liljenberg <petli@ctrl-c.liu.se> | |
# | |
# This library is free software; you can redistribute it and/or | |
# modify it under the terms of the GNU Lesser General Public License | |
# as published by the Free Software Foundation; either version 2.1 | |
# of the License, or (at your option) any later version. | |
# | |
# This library is distributed in the hope that it will be useful, | |
# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |
# See the GNU Lesser General Public License for more details. | |
# | |
# You should have received a copy of the GNU Lesser General Public | |
# License along with this library; if not, write to the | |
# Free Software Foundation, Inc., | |
# 59 Temple Place, | |
# Suite 330, | |
# Boston, MA 02111-1307 USA | |
import sys | |
import importlib | |
# List the modules which contain the corresponding functions | |
_display_mods = { | |
'OpenVMS': 'vms_connect', | |
} | |
_default_display_mod = 'unix_connect' | |
_socket_mods = { | |
'OpenVMS': 'vms_connect' | |
} | |
_default_socket_mod = 'unix_connect' | |
_auth_mods = { | |
'OpenVMS': 'vms_connect' | |
} | |
_default_auth_mod = 'unix_connect' | |
# Figure out which OS we're using. | |
# sys.platform is either "OS-ARCH" or just "OS". | |
_parts = sys.platform.split('-') | |
platform = _parts[0] | |
del _parts | |
def _relative_import(modname): | |
return importlib.import_module('..' + modname, __name__) | |
def get_display(display): | |
"""dname, protocol, host, dno, screen = get_display(display) | |
Parse DISPLAY into its components. If DISPLAY is None, use | |
the default display. The return values are: | |
DNAME -- the full display name (string) | |
PROTOCOL -- the protocol to use (None if automatic) | |
HOST -- the host name (string, possibly empty) | |
DNO -- display number (integer) | |
SCREEN -- default screen number (integer) | |
""" | |
modname = _display_mods.get(platform, _default_display_mod) | |
mod = _relative_import(modname) | |
return mod.get_display(display) | |
def get_socket(dname, protocol, host, dno): | |
"""socket = get_socket(dname, protocol, host, dno) | |
Connect to the display specified by DNAME, PROTOCOL, HOST and DNO, which | |
are the corresponding values from a previous call to get_display(). | |
Return SOCKET, a new socket object connected to the X server. | |
""" | |
modname = _socket_mods.get(platform, _default_socket_mod) | |
mod = _relative_import(modname) | |
return mod.get_socket(dname, protocol, host, dno) | |
def get_auth(sock, dname, protocol, host, dno): | |
"""auth_name, auth_data = get_auth(sock, dname, protocol, host, dno) | |
Return authentication data for the display on the other side of | |
SOCK, which was opened with DNAME, HOST and DNO, using PROTOCOL. | |
Return AUTH_NAME and AUTH_DATA, two strings to be used in the | |
connection setup request. | |
""" | |
modname = _auth_mods.get(platform, _default_auth_mod) | |
mod = _relative_import(modname) | |
return mod.get_auth(sock, dname, protocol, host, dno) | |