def set_device(id, direction='out'): if direction == 'out': output = 'DefaultOutput' elif direction == 'voice_out': output = 'DefaultVoiceOutput' direction = 'out' elif direction == 'in': output = 'DefaultInput' elif direction == 'voice_in': output = 'DefaultVoiceInput' direction = 'in' else: output = 'DefaultOutput' if type(id) == dict: # By get_devices output device_id = id['id'] elif type(id) in (str, unicode): # By ID if id[0] == '{': device_id = id # By name else: devices = get_devices() device_id = devices[direction][id]['id'] else: return false registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\Drivers\\winealsa.drv': { output: device_id}})
def set_device(id, direction='out'): if direction == 'out': output = 'DefaultOutput' elif direction == 'voice_out': output = 'DefaultVoiceOutput' direction = 'out' elif direction == 'in': output = 'DefaultInput' elif direction == 'voice_in': output = 'DefaultVoiceInput' direction = 'in' else: output = 'DefaultOutput' if type(id) == dict: # By get_devices output device_id = id['id'] elif type(id) in (str, unicode): # By ID if id[0] == '{': device_id = id # By name else: devices = get_devices() device_id = devices[direction][id]['id'] else: return false registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\Drivers\\winealsa.drv': { output: device_id } })
def set_enabled_drivers(drivers): """ Sets the list of enabled audio drivers disabling all others """ #CACHE['audio-enabled-drivers'] = drivers registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\Drivers': {"Audio": ','.join(drivers)}})
def set_managed(state): if state: reg_state = "Y" else: reg_state = "N" registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\X11 Driver': {"Managed": reg_state}}) CACHE['windows-managed'] = (state == True)
def set_show_dot_files(value): if value: registry.set({"HKEY_CURRENT_USER\\Software\\Wine": {"ShowDotFiles": "Y"}}) CACHE["show-dot-files"] = True else: registry.set({"HKEY_CURRENT_USER\\Software\\Wine": {"ShowDotFiles": "N"}}) CACHE["show-dot-files"] = False
def set_mouse_grab(state): if state: reg_state = "Y" else: reg_state = "N" registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\X11 Driver': {"DXGrab": reg_state}}) CACHE['windows-mouse-grab'] = (state == True)
def set_eax_support(value, program=None): """ Enables or disables support for EAX on the CPU """ value = common.value_as_bool(value) if value == None: raise ValueError( "type of value should something convertable to a boolean") elif value == True: value = 'Y' else: value = None if program: registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % program: { "EAXEnabled": value } }) else: registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\DirectSound': { "EAXEnabled": value } })
def set_show_dot_files(value): if value: registry.set({'HKEY_CURRENT_USER\\Software\\Wine': {"ShowDotFiles": "Y"} }) CACHE['show-dot-files'] = True else: registry.set({'HKEY_CURRENT_USER\\Software\\Wine': {"ShowDotFiles": "N"} }) CACHE['show-dot-files'] = False
def set(foldername, target): """Set the shellfolder "foldername" (one of the keys in FOLDER_REG_NAMES) to the directory "target".""" if foldername.lower() in FOLDER_REG_NAMES.keys(): # Camelcase the folder #foldername = " ".join([ i.capitalize() for i in foldername.split(" ") ]) #userpath = registry.get('HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Session Manager\\Environment', 'APPDATA') #folderpath = "%s/drive_c/%s/%s" % (common.ENV['WINEPREFIX'], "/".join(userpath[3:].split("\\")[:-1]), foldername) folder_path = registry.get('HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders', FOLDER_REG_NAMES[foldername.lower()]) # If the registy folder path is a symlink from inside the configuration, change the symlink if isinstance(folder_path, basestring) and ('\\windows\\' or '\\users\\' in folder_path): folder_path = util.wintounix(folder_path) try: os.remove(folder_path) except OSError: try: os.rmdir(folder_path) except OSError: print("Skipping %s, there are files in the directory" % os.path.basename(folder_path), file=sys.stderr) os.symlink(target, folder_path) # If not, it refers to a real directory, don't mess with it, set the registry info instead else: folder_path = target registry.set({'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders': {FOLDER_REG_NAMES[foldername.lower()]: folder_path}}) try: folders = CACHE['shellfolders'] except KeyError: folders = {} folders[foldername] = folder_path CACHE['shellfolders'] = folders
def set_video_memory_size(value): if value != None and type(value) != type(1): raise ValueError("type of value should be None or int") registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\Direct3D': { 'VideoMemorySize': value } })
def set_screen_dpi(value): dword = 'dword:000000' + hex(int(value))[2:] registry.set({ 'HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Hardware Profiles\\Current\\Software\\Fonts': { "LogPixels": dword } })
def disable_driver(driver): """ Removes an audio driver from the list of enabled audio drivers driver can be one of ["alsa", "oss", "coreaudio", "jack", "nas", "esd", "audioio"] """ drivers = get_enabled_drivers() if driver in DRIVER_NAMES and DRIVER_NAMES[driver] in drivers: drivers.remove(DRIVER_NAMES[driver]) registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\Drivers': {"Audio": ','.join(drivers)}})
def set_antialiasing_disabled(value): if value: value = "N" else: value = None registry.set({'HKEY_CURRENT_USER\\Software\\Wine\X11 Driver': { "ClientSideAntiAliasWithRender": value, "ClientSideAntiAliasWithCore": value }})
def set_bit_depth(bits, program=None): """ Sets the DirectSound audio bit depth """ if program: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % program: { "DefaultBitsPerSample": bits}}) else: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\DirectSound': { "DefaultBitsPerSample": bits}})
def set_type(driveletter, drive_type): # Make sure we use the same caps for the driveletter as the reg typesraw = registry.get('HKEY_LOCAL_MACHINE\\Software\\Wine\\Drives', quiet=True, shallow=True) for key,value in typesraw.iteritems(): if key.lower == driveletter.lower(): driverletter = key # Save it if drive_type not in DRIVE_TYPES or drive_type != None: util.warning("Setting drive type to unknown value: %s" % drive_type) registry.set({'HKEY_LOCAL_MACHINE\\Software\\Wine\\Drives': {"%s:" % driveletter: drive_type}})
def set_type(driveletter, drive_type): # Make sure we use the same caps for the driveletter as the reg typesraw = registry.get("HKEY_LOCAL_MACHINE\\Software\\Wine\\Drives", quiet=True, shallow=True) for key, value in typesraw.iteritems(): if key.lower == driveletter.lower(): driverletter = key # Save it if drive_type not in DRIVE_TYPES or drive_type != None: util.warning("Setting drive type to unknown value: %s" % drive_type) registry.set({"HKEY_LOCAL_MACHINE\\Software\\Wine\\Drives": {"%s:" % driveletter: drive_type}})
def set_mouse_warp(state='enable'): reg_state = 'enable' # Default value if state in ('enable', 'disable', 'force'): reg_state = state registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\DirectInput': { 'MouseWarpOverride': reg_state } }) CACHE['xinput-mouse-warp'] = reg_state
def set_sample_rate(rate, program=None): """ Sets the DirectSound audio sample rate """ if program: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % program: { "DefaultSampleRate": rate}}) else: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\DirectSound': { "DefaultSampleRate": rate}})
def set_acceleration(accel, program=None): """ Sets the level of audio acceleration to use. accel can be one of ["full", "standard", "basic", "emulation"] """ if program: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % \ program: {"HardwareAcceleration": ACCELERATION_NAMES[accel]}}) else: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\DirectSound': { "HardwareAcceleration": ACCELERATION_NAMES[accel]}})
def drive_mapping_to_reg(driveletter, mapping): hexmapping = util.utf8tohex(mapping).upper() hexletter = "00000000-0000-0000-0000-0000000000%s" % driveletter.upper().encode('hex') registry.set({'HKEY_LOCAL_MACHINE\\System\\MountedDevices': { "\\\\??\\\\Volume{%s}" % hexletter: "hex:%s" % hexmapping, "\\\\DosDevices\\\\%s:" % driveletter.upper(): "hex:%s" % hexmapping }}) registry.set({'HKEY_LOCAL_MACHINE\\Software\\Wine\\Drives': { "%s:" % driveletter.upper(): "hd" }})
def set_enabled_drivers(drivers): """ Sets the list of enabled audio drivers disabling all others """ #CACHE['audio-enabled-drivers'] = drivers registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\Drivers': { "Audio": ','.join(drivers) } })
def set_pixel_shader(value, program=None): if value == True or type(value) == type(str) and value.lower() == "hardware": value = None else: value = "disabled" if program: path = 'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\Direct3D' % program else: path = 'HKEY_CURRENT_USER\\Software\\Wine\\Direct3D' registry.set({path: {"PixelShaderMode": value}})
def set_allow_multisampling(value): value = common.value_as_bool(value) if value == None: raise ValueError("type of value should something convertable to a boolean") elif value == True: value = "enabled" else: value = None registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\Direct3D': { 'Multisampling': value }}) return value, True
def set_pixel_shader(value, program=None): if value == True or type(value) == type( str) and value.lower() == "hardware": value = None else: value = "disabled" if program: path = 'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\Direct3D' % program else: path = 'HKEY_CURRENT_USER\\Software\\Wine\\Direct3D' registry.set({path: {"PixelShaderMode": value}})
def set_allow_xrandr(value): value = common.value_as_bool(value) if value == None: raise ValueError("type of value should something convertable to a boolean") elif value == True: value = 'y' else: value = 'n' registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\X11 Driver': { 'UseXRandR': value }})
def set_antialiasing_disabled(value): if value: value = "N" else: value = None registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\X11 Driver': { "ClientSideAntiAliasWithRender": value, "ClientSideAntiAliasWithCore": value } })
def enable_driver(driver): """ Adds an audio driver to the list of enabled audio drivers driver can be one of ["alsa", "oss", "coreaudio", "jack", "nas", "esd", "audioio"] """ drivers = filter(len, get_enabled_drivers()) print driver, DRIVER_NAMES if driver in DRIVER_NAMES and DRIVER_NAMES[driver] not in drivers: drivers.append(DRIVER_NAMES[driver]) registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\Drivers': {"Audio": ','.join(drivers)}}) else: return False
def set_dxva2_vaapi(value, program=None): value = common.value_as_bool(value) if value == None: raise ValueError("type of value should something convertable to a boolean") elif value == True: value = 'va' else: value = None if program: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DXVA2' % program: {'backend': value}}) else: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\DXVA2': {'backend': value}})
def set(version, program=False): version = __translate_version_string(version) if version not in versions: raise KeyError( "Error: Version should be one of the following: default, {0}".format( ", ".join(versions) ) ) if program: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s' % program: {"Version": version} }) else: set_default(version)
def disable_driver(driver): """ Removes an audio driver from the list of enabled audio drivers driver can be one of ["alsa", "oss", "coreaudio", "jack", "nas", "esd", "audioio"] """ drivers = get_enabled_drivers() if driver in DRIVER_NAMES and DRIVER_NAMES[driver] in drivers: drivers.remove(DRIVER_NAMES[driver]) registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\Drivers': { "Audio": ','.join(drivers) } })
def drive_mapping_to_reg(driveletter, mapping): hexmapping = util.utf8tohex(mapping).upper() hexletter = "00000000-0000-0000-0000-0000000000%s" % driveletter.upper().encode("hex") registry.set( { "HKEY_LOCAL_MACHINE\\System\\MountedDevices": { "\\\\??\\\\Volume{%s}" % hexletter: "hex:%s" % hexmapping, "\\\\DosDevices\\\\%s:" % driveletter.upper(): "hex:%s" % hexmapping, } } ) registry.set({"HKEY_LOCAL_MACHINE\\Software\\Wine\\Drives": {"%s:" % driveletter.upper(): "hd"}})
def set_check_float_constants(value, program=None): value = common.value_as_bool(value) if value == None: raise ValueError("type of value should something convertable to a boolean") elif value == True: value = 'enabled' else: value = None if program: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\Direct3D' % program: {'CheckFloatConstants': value}}) else: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\Direct3D': {'CheckFloatConstants': value}})
def set_offscreen_rendering_mode(mode): if mode != None: mode = mode.lower() if mode in OFFSCREEN_RENDERING_MODES_DEPRECATED: raise DeprecationWarning("%s is deprecated. Mode should be %s" % ( mode, common.list_to_english_or(OFFSCREEN_RENDERING_MODES) )) elif mode not in OFFSCREEN_RENDERING_MODES: raise ValueError("mode should be %s" % ( common.list_to_english_or(OFFSCREEN_RENDERING_MODES) )) registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\Direct3D': { 'OffscreenRenderingMode': mode }})
def set_csmt(value, program=None): value = common.value_as_bool(value) if value == None: raise ValueError("type of value should something convertable to a boolean") elif value == True: value = 'enabled' else: value = 'disabled' if common.ENV.get('WINE_SUPPORTS_CSMT') == 'true': if common.ENV.get('WINE_SUPPORTS_CSMT_TYPE') == 'dll': if value == 'enabled': value = 'wined3d-csmt.dll' else: value = None if program: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DllRedirects' % program: {'wined3d': value}}) else: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\DllRedirects': {'wined3d': value}}) else: if program: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\Direct3D' % program: {'CSMT': value}}) else: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\Direct3D': {'CSMT': value}}) else: return None
def set_acceleration(accel, program=None): """ Sets the level of audio acceleration to use. accel can be one of ["full", "standard", "basic", "emulation"] """ if program: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % \ program: {"HardwareAcceleration": ACCELERATION_NAMES[accel]}}) else: registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\DirectSound': { "HardwareAcceleration": ACCELERATION_NAMES[accel] } })
def set_allow_xrandr(value): value = common.value_as_bool(value) if value == None: raise ValueError( "type of value should something convertable to a boolean") elif value == True: value = 'y' else: value = 'n' registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\X11 Driver': { 'UseXRandR': value } })
def set_allow_multisampling(value): value = common.value_as_bool(value) if value == None: raise ValueError( "type of value should something convertable to a boolean") elif value == True: value = "enabled" else: value = None registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\Direct3D': { 'Multisampling': value } }) return value, True
def set_driver_emulation(state, program=None): """ Sets wether DirectSound should emulate a hardware driver """ if state: state_str = "Y" else: state_str = "N" if program: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % program: { "EmulDriver": state_str}}) else: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\DirectSound': { "EmulDriver": state_str}})
def set_offscreen_rendering_mode(mode): if mode != None: mode = mode.lower() if mode in OFFSCREEN_RENDERING_MODES_DEPRECATED: raise DeprecationWarning( "%s is deprecated. Mode should be %s" % (mode, common.list_to_english_or(OFFSCREEN_RENDERING_MODES))) elif mode not in OFFSCREEN_RENDERING_MODES: raise ValueError( "mode should be %s" % (common.list_to_english_or(OFFSCREEN_RENDERING_MODES))) registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\Direct3D': { 'OffscreenRenderingMode': mode } })
def enable_driver(driver): """ Adds an audio driver to the list of enabled audio drivers driver can be one of ["alsa", "oss", "coreaudio", "jack", "nas", "esd", "audioio"] """ drivers = filter(len, get_enabled_drivers()) print driver, DRIVER_NAMES if driver in DRIVER_NAMES and DRIVER_NAMES[driver] not in drivers: drivers.append(DRIVER_NAMES[driver]) registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\Drivers': { "Audio": ','.join(drivers) } }) else: return False
def set_default(version): version = __translate_version_string(version, strict=True) shortversion = version version = windowsversions[version] # Clear values first registry_values = { Key9x: { "VersionNumber": None, "SubVersionNumber": None }, KeyNT: { "CSDVersion": None, "CurrentVersion": None, "CurrentBuildNumber": None }, KeyProdNT: { "ProductType": None }, KeyWindNT: { "CSDVersion": None }, KeyEnvNT: { "OS": None }, 'HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\ServiceCurrent': { "OS": None }, 'HKEY_CURRENT_USER\\Software\\Wine': { "Version": None } } # Set the required keys for the tree types of version info that exist so far if version[wPlatformId] == "WIN32_WINDOWS": registry_values.update({ Key9x: { "VersionNumber": "{0}.{1}.{2}".format( version[wMajorVersion], version[wMinorVersion], version[wBuildNumber] ), "SubVersionNumber": version[wCSDVersion] } }) elif version[wPlatformId] == "WIN32_NT": registry_values.update({ KeyNT: { "CurrentVersion": "{0}.{1}".format( version[wMajorVersion], version[wMinorVersion] ), "CSDVersion": version[wCSDVersion], "CurrentBuildNumber": version[wBuildNumber] }, KeyProdNT: { "ProductType": version[wProductType] }, KeyWindNT: { "CSDVersion": "dword:00000%s00" % version[wServicePackMajor] }, KeyEnvNT: { "OS": "Windows_NT" } }) elif version[wPlatformId] == "WIN32s": registry_values.update({ 'HKEY_CURRENT_USER\\Software\\Wine': {"Version": shortversion} }) registry.set(registry_values)
def set_sample_rate(rate, program=None): """ Sets the DirectSound audio sample rate """ if program: registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % program: { "DefaultSampleRate": rate } }) else: registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\DirectSound': { "DefaultSampleRate": rate } })
def set_font_antialiasing(value): if value: reg = { "FontSmoothing": 2, "FontSmoothingType": "dword:00000002", "FontSmoothingGamma": "dword:00000578", "FontSmoothingOrientation": "dword:00000001" } else: reg = { "FontSmoothing": None, "FontSmoothingType": None, "FontSmoothingGamma": None, "FontSmoothingOrientation": None } registry.set({'HKEY_CURRENT_USER\\Control Panel\\Desktop': reg})
def set_eax_support(value, program=None): """ Enables or disables support for EAX on the CPU """ value = common.value_as_bool(value) if value == None: raise ValueError("type of value should something convertable to a boolean") elif value == True: value = 'Y' else: value = None if program: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % program: { "EAXEnabled": value}}) else: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\DirectSound': { "EAXEnabled": value}})
def set_bit_depth(bits, program=None): """ Sets the DirectSound audio bit depth """ if program: registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % program: { "DefaultBitsPerSample": bits } }) else: registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\DirectSound': { "DefaultBitsPerSample": bits } })
def set_theme(theme): theme_file = _get_theme_file_from_name(theme) theme_file = util.unixtowin(theme_file) return registry.set({ ('HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\' + 'CurrentVersion\\ThemeManager'): { "DllName": util.string_escape_char(theme_file, '\\'), "ThemeActive": '1' } })
def set_theme(theme): theme_file = _get_theme_file_from_name(theme) theme_file = util.unixtowin(theme_file) return registry.set({ ('HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\'+ 'CurrentVersion\\ThemeManager'): { "DllName": util.string_escape_char(theme_file, '\\'), "ThemeActive": '1' } })
def set_user_style(style, state): if style not in USER_PREFERENCES_MASK: raise ValueError, ("Argument style should be one of " + common.list_to_english_or( ('"{0}"'.format(i) for i in USER_PREFERENCES_MASK.keys()))) mask = registry.get('HKEY_CURRENT_USER\\Control Panel\\Desktop', 'UserPreferenceMask') if mask: mask = common.bitfield(mask) mask[USER_PREFERENCES_MASK[style]['bit']] = int(state) registry_value = mask.registry_value() registry.set({ 'HKEY_CURRENT_USER\\Control Panel\\Desktop': { 'UserPreferenceMask': registry_value } }) else: return False
def remove(driveletter): driveletter = driveletter[0] for driverletter_case in (driveletter.upper(), driveletter.lower()): drive_path = "{wineprefix}/dosdevices/{drive}:".format( wineprefix=common.ENV["WINEPREFIX"], drive=driverletter_case ) drive_device_path = "{0}:".format(drive_path) if os.path.lexists(drive_path): os.remove(drive_path) if os.path.lexists(drive_device_path): os.remove(drive_device_path) registry.set({"HKEY_LOCAL_MACHINE\\Software\\Wine\\Drives": {"%s:" % driveletter: None}}) hex_letter = "00000000-0000-0000-0000-0000000000{hex_letter}".format(hex_letter=driveletter.upper().encode("hex")) registry.set( { "HKEY_LOCAL_MACHINE\\System\\MountedDevices": { "\\\\??\\\\Volume{%s}" % hex_letter: None, "\\\\DosDevices\\\\%s:" % driveletter.upper(): None, } } ) registry.set( { "HKEY_LOCAL_MACHINE\\System\\MountedDevices": { "\\??\\Volume{%s}" % hex_letter: None, "\\DosDevices\\%s:" % driveletter.upper(): None, } } )
def set(foldername, target): """Set the shellfolder "foldername" (one of the keys in FOLDER_REG_NAMES) to the directory "target".""" if foldername.lower() in FOLDER_REG_NAMES.keys(): # Camelcase the folder #foldername = " ".join([ i.capitalize() for i in foldername.split(" ") ]) #userpath = registry.get('HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Session Manager\\Environment', 'APPDATA') #folderpath = "%s/drive_c/%s/%s" % (common.ENV['WINEPREFIX'], "/".join(userpath[3:].split("\\")[:-1]), foldername) folder_path = registry.get( 'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders', FOLDER_REG_NAMES[foldername.lower()]) # If the registy folder path is a symlink from inside the configuration, change the symlink if isinstance(folder_path, basestring) and ('\\windows\\' or '\\users\\' in folder_path): folder_path = util.wintounix(folder_path) try: os.remove(folder_path) except OSError: try: os.rmdir(folder_path) except OSError: print("Skipping %s, there are files in the directory" % os.path.basename(folder_path), file=sys.stderr) os.symlink(target, folder_path) # If not, it refers to a real directory, don't mess with it, set the registry info instead else: folder_path = target registry.set({ 'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders': { FOLDER_REG_NAMES[foldername.lower()]: folder_path } }) try: folders = CACHE['shellfolders'] except KeyError: folders = {} folders[foldername] = folder_path CACHE['shellfolders'] = folders
def remove(driveletter): driveletter = driveletter[0] for driverletter_case in (driveletter.upper(), driveletter.lower()): drive_path = '{wineprefix}/dosdevices/{drive}:'.format( wineprefix = common.ENV['WINEPREFIX'], drive = driverletter_case ) drive_device_path = '{0}:'.format(drive_path) if os.path.lexists(drive_path): os.remove(drive_path) if os.path.lexists(drive_device_path): os.remove(drive_device_path) registry.set({'HKEY_LOCAL_MACHINE\\Software\\Wine\\Drives': { "%s:" % driveletter: None }}) hex_letter = '00000000-0000-0000-0000-0000000000{hex_letter}'.format( hex_letter = driveletter.upper().encode('hex') ) registry.set({'HKEY_LOCAL_MACHINE\\System\\MountedDevices': { "\\\\??\\\\Volume{%s}" % hex_letter: None, "\\\\DosDevices\\\\%s:" % driveletter.upper(): None }}) registry.set({'HKEY_LOCAL_MACHINE\\System\\MountedDevices': { "\\??\\Volume{%s}" % hex_letter: None, "\\DosDevices\\%s:" % driveletter.upper(): None }})
def set_dxva2_vaapi(value, program=None): value = common.value_as_bool(value) if value == None: raise ValueError( "type of value should something convertable to a boolean") elif value == True: value = 'va' else: value = None if program: registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DXVA2' % program: { 'backend': value } }) else: registry.set( {'HKEY_CURRENT_USER\\Software\\Wine\\DXVA2': { 'backend': value }})
def set_driver_emulation(state, program=None): """ Sets wether DirectSound should emulate a hardware driver """ if state: state_str = "Y" else: state_str = "N" if program: registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % program: { "EmulDriver": state_str } }) else: registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\DirectSound': { "EmulDriver": state_str } })
def set_check_float_constants(value, program=None): value = common.value_as_bool(value) if value == None: raise ValueError( "type of value should something convertable to a boolean") elif value == True: value = 'enabled' else: value = None if program: registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\Direct3D' % program: { 'CheckFloatConstants': value } }) else: registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\Direct3D': { 'CheckFloatConstants': value } })
def set_user_style(style, state): if style not in USER_PREFERENCES_MASK: raise ValueError, ( "Argument style should be one of "+ common.list_to_english_or(( '"{0}"'.format(i) for i in USER_PREFERENCES_MASK.keys() )) ) mask = registry.get( 'HKEY_CURRENT_USER\\Control Panel\\Desktop', 'UserPreferenceMask' ) if mask: mask = common.bitfield(mask) mask[ USER_PREFERENCES_MASK[style]['bit'] ] = int(state) registry_value = mask.registry_value() registry.set({ 'HKEY_CURRENT_USER\\Control Panel\\Desktop': { 'UserPreferenceMask': registry_value } }) else: return False
def set_csmt(value, program=None): value = common.value_as_bool(value) if value == None: raise ValueError( "type of value should something convertable to a boolean") elif value == True: value = 'enabled' else: value = 'disabled' if common.ENV.get('WINE_SUPPORTS_CSMT') == 'true': if common.ENV.get('WINE_SUPPORTS_CSMT_TYPE') == 'dll': if value == 'enabled': value = 'wined3d-csmt.dll' else: value = None if program: registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DllRedirects' % program: { 'wined3d': value } }) else: registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\DllRedirects': { 'wined3d': value } }) else: if program: registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\Direct3D' % program: { 'CSMT': value } }) else: registry.set({ 'HKEY_CURRENT_USER\\Software\\Wine\\Direct3D': { 'CSMT': value } }) else: return None
def set_override(library, override): _override = override if library.endswith(".dll"): library = library[:-4] if type(override) is bool: if override: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\DllOverrides': { library: "native,builtin"}}) else: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\DllOverrides': { library: None}}) else: if type(override) is str: override = override.lower() if override.startswith('disable'): override = '' else: # make sure that the override is separated by only commas override = ','.join([ i.strip() for i in filter(len, override.replace(',', ' ').split()) ]) if library.lower() == 'comctl32': common.run([ 'rm', '-rf', util.wintounix( "{0}\\windows\\winsxs\\manifests\\"+ "x86_microsoft.windows."+ "common-controls_6595b64144ccf1df_6.0."+ "2600.2982_none_deadbeef.manifest".format( drives.get_main_drive(use_registry=False) ) ) ]) if override in ('native', 'builtin', 'native,builtin', 'builtin,native', '', 'disabled', None): registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\DllOverrides': { library: override}}) else: raise ValueError("Wrong value for override: {0}".format(_override))