コード例 #1
0
def get_theme():
    if registry.get(
            'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\' +
            'CurrentVersion\\ThemeManager', 'ThemeActive'):
        return registry.get(
            'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\' +
            'CurrentVersion\\ThemeManager', 'DllName')
コード例 #2
0
ファイル: util.py プロジェクト: najibalghaeth/vineyard
def get_win_env(key=None):
    # Get the system environment
    env_system = registry.get((
        'HKEY_LOCAL_MACHINE\\System\\' +
        'CurrentControlSet\\Control\\Session Manager\\Environment'))
    # Get the user environment
    env_user = registry.get((
        'HKEY_CURRENT_USER\\' +
        'Environment'))
    # Start with the system keys
    env = env_system
    # Let the user-set ones override them
    env.update(env_user)

    if key is None:
        return env
    else:
        if key in env:
            return env[key]
        else:
            env_lowercase = dict(( (key.lower(), value) for key, value in env.iteritems() ))
            if key in env_lowercase:
                return env_lowercase[key]
            elif key.lower() in env_lowercase:
                return env_lowercase[key.lower()]
    return None
コード例 #3
0
ファイル: util.py プロジェクト: Cybolic/vineyard
def get_win_env(key=None):
    # Get the system environment
    env_system = registry.get((
        'HKEY_LOCAL_MACHINE\\System\\' +
        'CurrentControlSet\\Control\\Session Manager\\Environment'))
    # Get the user environment
    env_user = registry.get((
        'HKEY_CURRENT_USER\\' +
        'Environment'))
    # Start with the system keys
    env = env_system
    # Let the user-set ones override them
    env.update(env_user)

    if key is None:
        return env
    else:
        if key in env:
            return env[key]
        else:
            env_lowercase = dict(( (key.lower(), value) for key, value in env.iteritems() ))
            if key in env_lowercase:
                return env_lowercase[key]
            elif key.lower() in env_lowercase:
                return env_lowercase[key.lower()]
    return None
コード例 #4
0
ファイル: desktop.py プロジェクト: najibalghaeth/vineyard
def set(boolean, size=None, program=None):
	"""
		Set whether Wine should emulate a virtual desktop

		@param boolean whether the virtual desktop should be used
		@type  boolean
		@param size    the size of the the virtual desktop in pixels
		@type  tuple   (width,height) - defaults to 800x600 (like winecfg)
		@param program if set, the virtual desktop should only be set for this program
		@type  string  "explorer.exe"

	"""
	if program is not None:
		program = program.lower()

	if common.ENV['VINEYARDCONFNAME'] == '':
		conf_name = 'Default'
	else:
		conf_name = common.ENV['VINEYARDCONFNAME']

	print("Size:", size)
	if size is None:
		if program:
			size = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Explorer\\Desktops', program, quiet=True)
		else:
			size = registry.get(
		        'HKEY_CURRENT_USER\\Software\\Wine\\Explorer\\Desktops',
		        conf_name, quiet=True)
			if not size:
				size = registry.get(
			    'HKEY_CURRENT_USER\\Software\\Wine\\Explorer\\Desktops',
			    'Desktops', quiet=True)
		if not size:
			size = (800, 600)
		else:
			size = tuple([ int(i) for i in size.split('x') ])
	else:
		size = tuple(size)

	print("Set desktop {0} as {1}".format(conf_name, size))
	if boolean:
		if program:
			registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\Explorer\\Desktops': {
			    program: '%sx%s' % size}})
			registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\Explorer' % program : {
			    "Desktop": program}})
		else:
			registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\Explorer\\Desktops': {
			    conf_name: '%sx%s' % size}})
			registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\Explorer': {
			    "Desktop": conf_name}})
	else:
		if program:
			registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\Explorer' % program : {
			    "Desktop": None}})
		else:
			registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\Explorer': {
			    "Desktop": None}})
コード例 #5
0
ファイル: appearance.py プロジェクト: Cybolic/vineyard
def get_theme():
    if registry.get(
        'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\'+
        'CurrentVersion\\ThemeManager',
        'ThemeActive'
    ):
        return registry.get(
            'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\'+
            'CurrentVersion\\ThemeManager',
            'DllName'
        )
コード例 #6
0
ファイル: graphics.py プロジェクト: Cybolic/vineyard
def get_pixel_shader(program=None):
    if 'graphics-pixel-shader' in CACHE:
        return CACHE['graphics-pixel-shader']

    if program:
        settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\Direct3D' % program, quiet=True)
    else:
        settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Direct3D', quiet=True)
    if "PixelShaderMode" in settings:
        return False
    else:
        return True
コード例 #7
0
ファイル: audio.py プロジェクト: Cybolic/vineyard
def get_eax_support(program=None):
    if common.ENV.get('WINE_SUPPORTS_EAX') == 'true':
        if program:
            bits = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % \
                program, "EAXEnabled", quiet=True)
        else:
            enabled = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectSound',
                "EAXEnabled", quiet=True)
        if enabled:
            return common.value_as_bool(enabled) or False
        else:
            return False
    else:
        return None
コード例 #8
0
ファイル: libraries.py プロジェクト: Cybolic/vineyard
def get_overrides():
    libs = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DllOverrides', quiet=True)
    overridden = []
    for lib, setting in libs.iteritems():
        if not setting.startswith("builtin"):
            overridden.append( (lib, setting) )
    return sorted(overridden)
コード例 #9
0
ファイル: graphics.py プロジェクト: Cybolic/vineyard
def get_csmt():
    if common.ENV.get('WINE_SUPPORTS_CSMT') == 'true':
        if common.ENV.get('WINE_SUPPORTS_CSMT_TYPE') == 'dll':
            dll_overrides = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DllRedirects')
            try:
                return dll_overrides['wined3d'] == 'wined3d-csmt.dll'
            except (KeyError, SyntaxError):
                return False
        else:
            direct3d_settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Direct3D')
            try:
                return direct3d_settings['CSMT'] == 'enabled'
            except (KeyError, SyntaxError):
                return False
    else:
        return None
コード例 #10
0
ファイル: graphics.py プロジェクト: Cybolic/vineyard
def get_allow_xrandr():
    settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\X11 Driver')
    try:
        return settings['UseXRandR'].lower() == 'y'
    except (KeyError, SyntaxError):
        # Default is True
        return True
コード例 #11
0
ファイル: audio.py プロジェクト: najibalghaeth/vineyard
def get_eax_support(program=None):
    if common.ENV.get('WINE_SUPPORTS_EAX') == 'true':
        if program:
            bits = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % \
                program, "EAXEnabled", quiet=True)
        else:
            enabled = registry.get(
                'HKEY_CURRENT_USER\\Software\\Wine\\DirectSound',
                "EAXEnabled",
                quiet=True)
        if enabled:
            return common.value_as_bool(enabled) or False
        else:
            return False
    else:
        return None
コード例 #12
0
ファイル: audio.py プロジェクト: Cybolic/vineyard
def get_acceleration(program=None):
    #try:
    #    return CACHE['audio-acceleration']
    #except KeyError:
    if program:
        level = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % \
            program, "HardwareAcceleration", quiet=True)
    else:
        level = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectSound',
            "HardwareAcceleration", quiet=True)
    if level:
        #CACHE['audio-acceleration'] = level
        return level
    else:
        #CACHE['audio-acceleration'] = ACCELERATION_NAMES['default']
        return ACCELERATION_NAMES['default']
コード例 #13
0
ファイル: shellfolders.py プロジェクト: Cybolic/vineyard
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
コード例 #14
0
def get_allow_xrandr():
    settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\X11 Driver')
    try:
        return settings['UseXRandR'].lower() == 'y'
    except (KeyError, SyntaxError):
        # Default is True
        return True
コード例 #15
0
def get_pixel_shader(program=None):
    if 'graphics-pixel-shader' in CACHE:
        return CACHE['graphics-pixel-shader']

    if program:
        settings = registry.get(
            'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\Direct3D' %
            program,
            quiet=True)
    else:
        settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Direct3D',
                                quiet=True)
    if "PixelShaderMode" in settings:
        return False
    else:
        return True
コード例 #16
0
ファイル: libraries.py プロジェクト: najibalghaeth/vineyard
def get_overrides():
    libs = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DllOverrides',
                        quiet=True)
    overridden = []
    for lib, setting in libs.iteritems():
        if not setting.startswith("builtin"):
            overridden.append((lib, setting))
    return sorted(overridden)
コード例 #17
0
ファイル: audio.py プロジェクト: najibalghaeth/vineyard
def get_acceleration(program=None):
    #try:
    #    return CACHE['audio-acceleration']
    #except KeyError:
    if program:
        level = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % \
            program, "HardwareAcceleration", quiet=True)
    else:
        level = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectSound',
                             "HardwareAcceleration",
                             quiet=True)
    if level:
        #CACHE['audio-acceleration'] = level
        return level
    else:
        #CACHE['audio-acceleration'] = ACCELERATION_NAMES['default']
        return ACCELERATION_NAMES['default']
コード例 #18
0
ファイル: graphics.py プロジェクト: Cybolic/vineyard
def get_dxva2_vaapi():
    if common.ENV.get('WINE_SUPPORTS_DXVA2_VAAPI') == 'true':
        settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DXVA2')
        try:
            return settings['backend'].lower() == 'va'
        except (KeyError, SyntaxError):
            return False
    else:
        return None
コード例 #19
0
ファイル: graphics.py プロジェクト: Cybolic/vineyard
def get_check_float_constants():
    if common.ENV.get('WINE_SUPPORTS_CHECK_FLOAT_CONSTANTS') == 'true':
        settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Direct3D\\CheckFloatConstants')
        try:
            return settings['backend'].lower() == 'enabled'
        except (KeyError, SyntaxError):
            return False
    else:
        return None
コード例 #20
0
def get_csmt():
    if common.ENV.get('WINE_SUPPORTS_CSMT') == 'true':
        if common.ENV.get('WINE_SUPPORTS_CSMT_TYPE') == 'dll':
            dll_overrides = registry.get(
                'HKEY_CURRENT_USER\\Software\\Wine\\DllRedirects')
            try:
                return dll_overrides['wined3d'] == 'wined3d-csmt.dll'
            except (KeyError, SyntaxError):
                return False
        else:
            direct3d_settings = registry.get(
                'HKEY_CURRENT_USER\\Software\\Wine\\Direct3D')
            try:
                return direct3d_settings['CSMT'] == 'enabled'
            except (KeyError, SyntaxError):
                return False
    else:
        return None
コード例 #21
0
ファイル: audio.py プロジェクト: Cybolic/vineyard
def get_bit_depth(program=None):
    if program:
        bits = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % \
            program, "DefaultBitsPerSample", quiet=True)
    else:
        #try:
        #    return CACHE['audio-bitdepth']
        #except KeyError:
        bits = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectSound',
            "DefaultBitsPerSample", quiet=True)
    if bits:
        #if program == None:
        #    CACHE['audio-bitdepth'] = bits
        return bits
    else:
        #if program == None:
        #    CACHE['audio-bitdepth'] = '16'
        return '16'
コード例 #22
0
ファイル: audio.py プロジェクト: Cybolic/vineyard
def get_driver_emulation(program=None):
    if program:
        state = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % program,
            "EmulDriver", quiet=True)
    else:
        #try:
        #    return CACHE['audio-emulate-driver']
        #except KeyError:
        state = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectSound',
            "EmulDriver", quiet=True)
    if state and "y" in state.lower():
        #if program == None:
        #    CACHE['audio-emulate-driver'] = True
        return True
    else:
        #if program == None:
        #    CACHE['audio-emulate-driver'] = False
        return False
コード例 #23
0
ファイル: audio.py プロジェクト: Cybolic/vineyard
def get_sample_rate(program=None):
    if program:
        rate = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % program,
            "DefaultSampleRate", quiet=True)
    else:
        #try:
        #    return CACHE['audio-samplerate']
        #except KeyError:
        rate = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectSound',
            "DefaultSampleRate", quiet=True)
    if rate:
        #if program == None:
        #    CACHE['audio-samplerate'] = rate
        return rate
    else:
        if program == None:
            CACHE['audio-samplerate'] = '44100'
        return '44100'
コード例 #24
0
def get_dxva2_vaapi():
    if common.ENV.get('WINE_SUPPORTS_DXVA2_VAAPI') == 'true':
        settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DXVA2')
        try:
            return settings['backend'].lower() == 'va'
        except (KeyError, SyntaxError):
            return False
    else:
        return None
コード例 #25
0
ファイル: drives.py プロジェクト: najibalghaeth/vineyard
def get_show_dot_files():
    if 'show-dot-files' in CACHE:
        return CACHE['show-dot-files']
    value = registry.get(
        'HKEY_CURRENT_USER\\Software\\Wine',
        'ShowDotFiles'
    ) in ('y', 'Y')
    CACHE['show-dot-files'] = value
    return value
コード例 #26
0
ファイル: graphics.py プロジェクト: Cybolic/vineyard
def get_screen_dpi():
    if 'graphics-screen-dpi' in CACHE:
        return CACHE['graphics-screen-dpi']

    settings = registry.get('HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Hardware Profiles\\Current\\Software\\Fonts', quiet=True)
    if "LowPixels" in settings:
        return int(settings["LowPixels"], 16)
    else:
        return 96
コード例 #27
0
ファイル: audio.py プロジェクト: najibalghaeth/vineyard
def get_bit_depth(program=None):
    if program:
        bits = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % \
            program, "DefaultBitsPerSample", quiet=True)
    else:
        #try:
        #    return CACHE['audio-bitdepth']
        #except KeyError:
        bits = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectSound',
                            "DefaultBitsPerSample",
                            quiet=True)
    if bits:
        #if program == None:
        #    CACHE['audio-bitdepth'] = bits
        return bits
    else:
        #if program == None:
        #    CACHE['audio-bitdepth'] = '16'
        return '16'
コード例 #28
0
ファイル: drives.py プロジェクト: Cybolic/vineyard
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}})
コード例 #29
0
def get_check_float_constants():
    if common.ENV.get('WINE_SUPPORTS_CHECK_FLOAT_CONSTANTS') == 'true':
        settings = registry.get(
            'HKEY_CURRENT_USER\\Software\\Wine\\Direct3D\\CheckFloatConstants')
        try:
            return settings['backend'].lower() == 'enabled'
        except (KeyError, SyntaxError):
            return False
    else:
        return None
コード例 #30
0
ファイル: drives.py プロジェクト: najibalghaeth/vineyard
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}})
コード例 #31
0
ファイル: version.py プロジェクト: Cybolic/vineyard
def _parseWineVersionFromRegistry():
    # Note, good info here as well, though it's a bit too precise for what we
    # need for Wine... but you never know ;)
    # http://techsupt.winbatch.com/TS/T000001074F4.html
    versionnt = registry.get(KeyNT, "CurrentVersion")
    best = DEFAULT # hardcoded fallback (same as in winecfg)

    if versionnt:
        version = versionnt
        platform = "WIN32_NT"
        build = int(registry.get(KeyNT, "CurrentBuildNumber"))
    else:
        version9x = registry.get(Key9x, "VersionNumber")
        if version9x:
            version = version9x
            platform = "WIN32_WINDOWS"
        else:
            return best

    # Strip non-legal characters, if needed
    try:
        int(version)
    except ValueError:
        chars = '0123456789.'
        version = ''.join(( i for i in version if i in chars ))

    if '.' in version:
        parts = version.split('.')
        if len(parts) == 3:
            build = int(parts[2])
        minor = int(parts[1])
        major = int(parts[0])
    else:
        major = int(version)

    for winver,data in windowsversions.iteritems():
        if data[wPlatformId] != platform or data[wMajorVersion] != major:
            continue
        best = winver
        if data[wMinorVersion] == minor and data[wBuildNumber] == build:
            return winver
    return best
コード例 #32
0
def get_mouse_grab():
    if 'windows-mouse-grab' in CACHE:
        return CACHE['windows-mouse-grab']

    settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\X11 Driver', quiet=True)
    if "DXGrab" in settings and "n" in settings["DXGrab"].lower():
        value = False
    else:
        value = True
    CACHE['windows-mouse-grab'] = value
    return value
コード例 #33
0
def get_managed():
    if 'windows-managed' in CACHE:
        return CACHE['windows-managed']

    settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\X11 Driver', quiet=True)
    if "Managed" in settings and "n" in settings["Managed"].lower():
        value = False
    else:
        value = True
    CACHE['windows-managed'] = value
    return value
コード例 #34
0
def get_screen_dpi():
    if 'graphics-screen-dpi' in CACHE:
        return CACHE['graphics-screen-dpi']

    settings = registry.get(
        'HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Hardware Profiles\\Current\\Software\\Fonts',
        quiet=True)
    if "LowPixels" in settings:
        return int(settings["LowPixels"], 16)
    else:
        return 96
コード例 #35
0
def get_antialiasing_disabled():
    if 'graphics-antialiasing-disabled' in CACHE:
        return CACHE['graphics-antialiasing-disabled']

    settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\X11 Driver')
    if ("ClientSideAntiAliasWithRender" in settings
            and "ClientSideAntiAliasWithCore" in settings
            and settings['ClientSideAntiAliasWithRender'].lower() == 'n'
            and settings['ClientSideAntiAliasWithCore'].lower() == 'n'):
        return True
    else:
        return False
コード例 #36
0
ファイル: audio.py プロジェクト: Cybolic/vineyard
def get_enabled_drivers():
    #try:
    #    return CACHE['audio-enabled-drivers']
    #except KeyError:
    drivers = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Drivers', "Audio", quiet=True)
    if drivers not in [ None, {} ]:
        drivers = drivers.split(',')
        #CACHE['audio-enabled-drivers'] = drivers
        return drivers
    else:
        #CACHE['audio-enabled-drivers'] = []
        return []
コード例 #37
0
ファイル: graphics.py プロジェクト: Cybolic/vineyard
def get_video_memory_size():
    if 'graphics-video-memory-size' in CACHE:
        return CACHE['graphics-video-memory-size']

    settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Direct3D')
    if 'VideoMemorySize' in settings:
        try:
            return int(settings['VideoMemorySize'])
        except ValueError:
            return None
    else:
        return None
コード例 #38
0
def get_video_memory_size():
    if 'graphics-video-memory-size' in CACHE:
        return CACHE['graphics-video-memory-size']

    settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Direct3D')
    if 'VideoMemorySize' in settings:
        try:
            return int(settings['VideoMemorySize'])
        except ValueError:
            return None
    else:
        return None
コード例 #39
0
ファイル: graphics.py プロジェクト: Cybolic/vineyard
def get_mouse_warp():
    if 'xinput-mouse-warp' in CACHE:
        return CACHE['xinput-mouse-warp']

    settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectInput', quiet=True)
    value = 'enable' # Default value
    if 'MouseWarpOverride' in settings:
        if type(settings['MouseWarpOverride']) in (str, unicode):
            if settings['MouseWarpOverride'].lower() in ('enable', 'disable', 'force'):
                value = settings['MouseWarpOverride'].lower()
    CACHE['xinput-mouse-warp'] = value
    return value
コード例 #40
0
ファイル: desktop.py プロジェクト: najibalghaeth/vineyard
def get(program=None):
	if program:
		program = program.lower()
		# Does this program use a virtual desktop?
		desktop = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\Explorer' % program.lower(), "Desktop", quiet=True)
		if desktop:
			desktop = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Explorer\\Desktops', desktop, quiet=True)
			if desktop:
				return tuple([ int(i) for i in desktop.lower().split('x') ])
			else:
				return None
	else:
		# Does the default configuration use a virtual desktop?
		desktop = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Explorer', "Desktop", quiet=True)
		if desktop:
			desktop = util.string_remove_escapes(desktop)
			desktop = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Explorer\\Desktops', desktop, quiet=True)
			if desktop:
				return tuple([ int(i) for i in desktop.lower().split('x') ])
			else:
				return None
コード例 #41
0
ファイル: version.py プロジェクト: Cybolic/vineyard
def get(program=None):
    if program:
        version = None
        programs = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults', quiet=True)
        for key in programs.keys():
            programs[key.lower()] = programs[key]
        if program.lower() in programs.keys() and 'Version' in programs[program.lower()]:
            version = programs[program.lower()]['Version']
        if version == None or version not in windowsversions.keys():
            return DEFAULT
        else:
            return version
    else:
        version = registry.get('HKEY_CURRENT_USER\\Software\\Wine', "Version", quiet=True)
        if version:
            if version == None or version not in windowsversions.keys():
                return DEFAULT
            else:
                return version
        else:
            return _parseWineVersionFromRegistry()
コード例 #42
0
ファイル: audio.py プロジェクト: najibalghaeth/vineyard
def get_driver_emulation(program=None):
    if program:
        state = registry.get(
            'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' %
            program,
            "EmulDriver",
            quiet=True)
    else:
        #try:
        #    return CACHE['audio-emulate-driver']
        #except KeyError:
        state = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectSound',
                             "EmulDriver",
                             quiet=True)
    if state and "y" in state.lower():
        #if program == None:
        #    CACHE['audio-emulate-driver'] = True
        return True
    else:
        #if program == None:
        #    CACHE['audio-emulate-driver'] = False
        return False
コード例 #43
0
ファイル: audio.py プロジェクト: najibalghaeth/vineyard
def get_sample_rate(program=None):
    if program:
        rate = registry.get(
            'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' %
            program,
            "DefaultSampleRate",
            quiet=True)
    else:
        #try:
        #    return CACHE['audio-samplerate']
        #except KeyError:
        rate = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectSound',
                            "DefaultSampleRate",
                            quiet=True)
    if rate:
        #if program == None:
        #    CACHE['audio-samplerate'] = rate
        return rate
    else:
        if program == None:
            CACHE['audio-samplerate'] = '44100'
        return '44100'
コード例 #44
0
def get_offscreen_rendering_mode():
    if 'graphics-offscreen-rendering-mode' in CACHE:
        return CACHE['graphics-offscreen-rendering-mode']

    settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Direct3D')
    if 'OffscreenRenderingMode' in settings:
        return settings['OffscreenRenderingMode']
    else:
        if (common.VERSION_MAJOR >= 1 and common.VERSION_MINOR >= 1
                and common.VERSION_MICRO >= 23):
            return 'fbo'
        else:
            return 'backbuffer'
コード例 #45
0
def get_mouse_warp():
    if 'xinput-mouse-warp' in CACHE:
        return CACHE['xinput-mouse-warp']

    settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectInput',
                            quiet=True)
    value = 'enable'  # Default value
    if 'MouseWarpOverride' in settings:
        if type(settings['MouseWarpOverride']) in (str, unicode):
            if settings['MouseWarpOverride'].lower() in ('enable', 'disable',
                                                         'force'):
                value = settings['MouseWarpOverride'].lower()
    CACHE['xinput-mouse-warp'] = value
    return value
コード例 #46
0
def get_user_style(style):
    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)
        return bool(mask[USER_PREFERENCES_MASK[style]['bit']])
    else:
        return bool(USER_PREFERENCES_MASK[style]['default'])
コード例 #47
0
ファイル: graphics.py プロジェクト: Cybolic/vineyard
def get_antialiasing_disabled():
    if 'graphics-antialiasing-disabled' in CACHE:
        return CACHE['graphics-antialiasing-disabled']

    settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\X11 Driver')
    if (
        "ClientSideAntiAliasWithRender" in settings and
        "ClientSideAntiAliasWithCore" in settings and
        settings['ClientSideAntiAliasWithRender'].lower() == 'n' and
        settings['ClientSideAntiAliasWithCore'].lower() == 'n'
    ):
        return True
    else:
        return False
コード例 #48
0
ファイル: audio.py プロジェクト: najibalghaeth/vineyard
def get_enabled_drivers():
    #try:
    #    return CACHE['audio-enabled-drivers']
    #except KeyError:
    drivers = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Drivers',
                           "Audio",
                           quiet=True)
    if drivers not in [None, {}]:
        drivers = drivers.split(',')
        #CACHE['audio-enabled-drivers'] = drivers
        return drivers
    else:
        #CACHE['audio-enabled-drivers'] = []
        return []
コード例 #49
0
ファイル: graphics.py プロジェクト: Cybolic/vineyard
def get_offscreen_rendering_mode():
    if 'graphics-offscreen-rendering-mode' in CACHE:
        return CACHE['graphics-offscreen-rendering-mode']

    settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Direct3D')
    if 'OffscreenRenderingMode' in settings:
        return settings['OffscreenRenderingMode']
    else:
        if (
            common.VERSION_MAJOR >= 1 and
            common.VERSION_MINOR >= 1 and
            common.VERSION_MICRO >= 23
        ):
            return 'fbo'
        else:
            return 'backbuffer'
コード例 #50
0
ファイル: audio.py プロジェクト: Cybolic/vineyard
def get_devices():
    output = {'out':{}, 'in':{}}
    devices = registry.get('HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\MMDevices\\Audio'
                                ,quiet=True)
    # Testing data:
    #devices = {'Capture': {'{F339B1DC-2C23-4841-A3D0-BD7E2B2C221F}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'HDA ATI SB - ALC889A Digital', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'HDA ATI SB - ALC889A Digital', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{77B76B38-AB09-4BA3-AC05-DB3DB1423465}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'HDA ATI SB - ALC889A Analog', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'HDA ATI SB - ALC889A Analog', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{FC420A03-7C59-49E4-A042-EDC9117F4014}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'default', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'default', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}}, 'Render': {'{50E55B21-BE90-4F49-897F-91251492D44B}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'USB Sound Device - USB Audio', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'USB Sound Device - USB Audio', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{5137B298-5B1B-4948-B14A-2696B8C02110}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'HDA ATI SB - ALC889A Digital', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'HDA ATI SB - ALC889A Digital', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{9F815751-4036-412E-AAEB-7D6AC3932230}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'HDA ATI SB - ALC889A Analog', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'HDA ATI SB - ALC889A Analog', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{8792A66E-6D13-4F9E-A608-1E5D12494D49}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'default', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'default', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}}}
    for device_type,type_name in [('Render','out'), ('Capture','in')]:
        for device_id in devices[device_type].iterkeys():
            # This is a bit of a hack. I have no idea how this data is structured,
            # I just use the first value that is a string instead of a hex value
            device_properties = devices[device_type][device_id]['Properties']
            name = [ i for i in device_properties.itervalues() if type(i) == unicode ][0]

            output[type_name][name] = device_properties
            output[type_name][name]['id'] = device_id
    return output
コード例 #51
0
ファイル: appearance.py プロジェクト: Cybolic/vineyard
def get_user_style(style):
    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)
        return bool(mask[ USER_PREFERENCES_MASK[style]['bit'] ])
    else:
        return bool(USER_PREFERENCES_MASK[style]['default'])
コード例 #52
0
ファイル: drives.py プロジェクト: najibalghaeth/vineyard
def get(use_registry=True, basic=False):
    """
    Get a dictionary of the available drives for this configuration.
    Note that this might include less drives than winecfg will show since this
    functions will only include drives that are actually visible to programs,
    unlike winecfg."""
    drives = {}
    types = {}
    if use_registry:
        types_raw = registry.get('HKEY_LOCAL_MACHINE\\Software\\Wine\\Drives', shallow=True)
        util.dict_to_case_insensitive(types_raw)

    for drive in os.listdir('%s/dosdevices' % common.ENV['WINEPREFIX']):
        # Skip device links
        if drive.endswith('::'):
            continue
        # Skip non-drive links (eg. printers)
        if drive.endswith(':') == False:
            continue

        drive_letter = drive[0].upper()
        drives[drive_letter] = {}

        drive_path = get_internal_path_for_drive(drive)
        #print("Drive: %s\nDrive path: %s" % (drive, drive_path))
        drives[drive_letter]['mapping'] = os.path.realpath(drive_path)

        drive_device_path = get_internal_path_for_drive_device(drive)
        if drive_device_path != None:
            drives[drive_letter]['device'] = os.path.realpath(drive_device_path)

        if not basic:
            if os.path.exists("%s/.windows-label" % drive_path):
                f = open("%s/.windows-label" % drive_path)
                drives[drive_letter]['label'] = f.read().replace('\n','').replace('\r','')
                f.close()
            if os.path.exists("%s/.windows-serial" % drive_path):
                f = open("%s/.windows-serial" % drive_path)
                drives[drive_letter]['serial'] = f.read().replace('\n','').replace('\r','')
                f.close()
        if use_registry:
            if drive.lower() in types.keys():
                drives[drive_letter]['type'] = types[drive.lower()]
    return drives
コード例 #53
0
ファイル: audio.py プロジェクト: najibalghaeth/vineyard
def get_devices():
    output = {'out': {}, 'in': {}}
    devices = registry.get(
        'HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\MMDevices\\Audio',
        quiet=True)
    # Testing data:
    #devices = {'Capture': {'{F339B1DC-2C23-4841-A3D0-BD7E2B2C221F}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'HDA ATI SB - ALC889A Digital', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'HDA ATI SB - ALC889A Digital', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{77B76B38-AB09-4BA3-AC05-DB3DB1423465}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'HDA ATI SB - ALC889A Analog', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'HDA ATI SB - ALC889A Analog', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{FC420A03-7C59-49E4-A042-EDC9117F4014}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'default', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'default', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}}, 'Render': {'{50E55B21-BE90-4F49-897F-91251492D44B}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'USB Sound Device - USB Audio', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'USB Sound Device - USB Audio', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{5137B298-5B1B-4948-B14A-2696B8C02110}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'HDA ATI SB - ALC889A Digital', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'HDA ATI SB - ALC889A Digital', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{9F815751-4036-412E-AAEB-7D6AC3932230}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'HDA ATI SB - ALC889A Analog', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'HDA ATI SB - ALC889A Analog', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{8792A66E-6D13-4F9E-A608-1E5D12494D49}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'default', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'default', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}}}
    for device_type, type_name in [('Render', 'out'), ('Capture', 'in')]:
        for device_id in devices[device_type].iterkeys():
            # This is a bit of a hack. I have no idea how this data is structured,
            # I just use the first value that is a string instead of a hex value
            device_properties = devices[device_type][device_id]['Properties']
            name = [
                i for i in device_properties.itervalues() if type(i) == unicode
            ][0]

            output[type_name][name] = device_properties
            output[type_name][name]['id'] = device_id
    return output
コード例 #54
0
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
コード例 #55
0
def get(folder=None):
    """Get the path of the directory defined in "folder" (one of the keys in FOLDER_REG_NAMES)."""
    if folder == None:
        try:
            return CACHE['shellfolders']
        except KeyError:
            pass
    else:
        folder = ' '.join((i.capitalize() for i in folder.split()))
        try:
            folders = CACHE['shellfolders']
            return folders[folder]
        except KeyError:
            pass

    folders = {}
    """userpath = registry.get('HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Session Manager\\Environment', 'APPDATA')
    for foldername in ["Desktop", "My Documents", "My Pictures", "My Music", "My Videos"]:
        if userpath:
            folders[foldername] = os.path.realpath("%s/drive_c/%s/%s" % (common.ENV['WINEPREFIX'], "/".join(userpath[3:].split("\\")[:-1]), foldername))
        else:
            folders[foldername] = util.getRealHome()"""
    reg_folders = registry.get(
        'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer',
        'Shell Folders')
    for folder_name, reg_name in FOLDER_REG_NAMES.iteritems():
        try:
            folder_path = os.readlink(util.wintounix(reg_folders[reg_name]))
        except (KeyError, OSError):
            folder_path = util.getRealHome()

        folder_name = ' '.join((i.capitalize() for i in folder_name.split()))
        folders[folder_name] = folder_path
    CACHE['shellfolders'] = folders
    if folder == None:
        return folders
    else:
        try:
            return folders[folder]
        except KeyError:
            return None
コード例 #56
0
ファイル: drives.py プロジェクト: Cybolic/vineyard
def get(use_registry=True, basic=False):
    """
    Get a dictionary of the available drives for this configuration.
    Note that this might include less drives than winecfg will show since this
    functions will only include drives that are actually visible to programs,
    unlike winecfg."""
    drives = {}
    types = {}
    if use_registry:
        types_raw = registry.get("HKEY_LOCAL_MACHINE\\Software\\Wine\\Drives", shallow=True)
        util.dict_to_case_insensitive(types_raw)

    for drive in os.listdir("%s/dosdevices" % common.ENV["WINEPREFIX"]):
        # Skip device links
        if drive.endswith("::"):
            continue

        drive_letter = drive[0].upper()
        drives[drive_letter] = {}

        drive_path = get_internal_path_for_drive(drive)
        # print("Drive: %s\nDrive path: %s" % (drive, drive_path))
        drives[drive_letter]["mapping"] = os.path.realpath(drive_path)

        drive_device_path = get_internal_path_for_drive_device(drive)
        if drive_device_path != None:
            drives[drive_letter]["device"] = os.path.realpath(drive_device_path)

        if not basic:
            if os.path.exists("%s/.windows-label" % drive_path):
                f = open("%s/.windows-label" % drive_path)
                drives[drive_letter]["label"] = f.read().replace("\n", "").replace("\r", "")
                f.close()
            if os.path.exists("%s/.windows-serial" % drive_path):
                f = open("%s/.windows-serial" % drive_path)
                drives[drive_letter]["serial"] = f.read().replace("\n", "").replace("\r", "")
                f.close()
        if use_registry:
            if drive.lower() in types.keys():
                drives[drive_letter]["type"] = types[drive.lower()]
    return drives