123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- """
- Copyright (c) Contributors to the Open 3D Engine Project.
- For complete copyright and license terms please see the LICENSE at the root of this distribution.
- SPDX-License-Identifier: Apache-2.0 OR MIT
- """
- import logging
- import winreg
- logger = logging.getLogger(__name__)
- LUMBERYARD_SETTINGS_PATH = r'Software\O3DE\O3DE\Settings'
- def set_ly_registry_value(reg_path, value_name, new_value, value_type=winreg.REG_DWORD):
- """
- Sets the specified value for the specified value_name in the LY registry key.
- :param reg_path: A string that identifies the registry path to the desired key (e.g. Software\\O3DE\\O3DE\\Settings)
- :param value_name: A string that identifies the value name (e.g. UndoLevels, ViewportInteractionModel)
- :param new_value: Value to set on the specified value_name
- :param value_type: The type of value set. Defaults to a 32-bit number.
- :return: None
- """
- # Open LY Registry key
- try:
- key = winreg.CreateKeyEx(winreg.HKEY_CURRENT_USER, reg_path, 0, access=winreg.KEY_ALL_ACCESS)
- except OSError as err:
- logger.error(err)
- # Set value_name to the specified value
- winreg.SetValueEx(key, value_name, 0, value_type, new_value)
- # Verify the value set to the specified value_name
- value = winreg.QueryValueEx(key, value_name)
- if new_value == value[0]:
- logger.debug(f'Successfully set {value_name} to {value[0]}')
- else:
- logger.debug(f'Failed to set {value_name} to {new_value}. Current value is {value[0]}.')
- def get_ly_registry_value(reg_path, value_name):
- """
- Gets the current value for an existing value_name in the LY registry key.
- :param reg_path: A string that identifies the registry path to the desired key (e.g. Software\\O3DE\\O3DE\\Settings)
- :param value_name: A string that identifies the value name (e.g. UndoLevels, ViewportInteractionModel)
- :return: Value set for the specified value_name
- """
- # Open LY Registry key
- try:
- key = winreg.CreateKeyEx(winreg.HKEY_CURRENT_USER, reg_path, 0, access=winreg.KEY_ALL_ACCESS)
- except OSError as err:
- logger.error(err)
- # Check if value name is present and return current value
- try:
- value_name_value = winreg.QueryValueEx(key, value_name)
- logger.debug(f'{value_name} is {value_name_value[0]}')
- return value_name_value[0]
- except OSError as err:
- logger.error(err)
- def delete_ly_registry_value(reg_path, value_name):
- """
- Deletes the specific registry value_name found in the reg_path key.
- :param reg_path: A string that identifies the registry path to the desired key (e.g. Software\\O3DE\\O3DE\\Settings)
- :param value_name: A string that identifies the value name (e.g. UndoLevels, ViewportInteractionModel)
- :return: None
- """
- # Open LY Registry key
- try:
- key = winreg.CreateKeyEx(winreg.HKEY_CURRENT_USER, reg_path, 0, access=winreg.KEY_ALL_ACCESS)
- except OSError as err:
- logger.error(err)
- # Attempt to delete the specified key/value
- try:
- winreg.DeleteValue(key, value_name)
- except OSError as err:
- logger.error(err)
|