mirror of
https://github.com/lutris/lutris
synced 2024-10-04 14:59:37 +00:00
Fix WineRegistryKey to allow setting keys correctly
This commit is contained in:
parent
a619602130
commit
2f582f3966
|
@ -201,15 +201,12 @@ class WineRegistryKey(object):
|
|||
if line.startswith('#'):
|
||||
self.add_meta(line)
|
||||
elif line.startswith('"'):
|
||||
elems = re.split(re.compile(r'(?<=[^\\]\")='), line, maxsplit=1)
|
||||
if len(elems) != 2:
|
||||
print(elems)
|
||||
raise ValueError("Unable to split %s" % line)
|
||||
key, value = elems
|
||||
self.set_subkey(key, value)
|
||||
key, value = re.split(re.compile(r'(?<=[^\\]\")='), line, maxsplit=1)
|
||||
key = key[1:-1]
|
||||
self.subkeys[key] = value
|
||||
elif line.startswith('@'):
|
||||
k, v = line.split('=', 1)
|
||||
self.set_subkey('\"default\"', v)
|
||||
self.subkeys['default'] = v
|
||||
|
||||
def add_to_last(self, line):
|
||||
last_subkey = list(self.subkeys.keys())[-1]
|
||||
|
@ -235,8 +232,9 @@ class WineRegistryKey(object):
|
|||
if isinstance(value, int):
|
||||
return "dword:{:08x}".format(value)
|
||||
elif isinstance(value, str):
|
||||
print(value)
|
||||
return "\"{}\"\n".format(value)
|
||||
return "\"{}\"".format(value)
|
||||
else:
|
||||
raise NotImplementedError("TODO")
|
||||
|
||||
def add_meta(self, meta_line):
|
||||
if not meta_line.startswith('#'):
|
||||
|
@ -257,7 +255,7 @@ class WineRegistryKey(object):
|
|||
return self.metas.get(name)
|
||||
|
||||
def set_subkey(self, name, value):
|
||||
self.subkeys[name[1:-1]] = value.strip()
|
||||
self.subkeys[name] = self.render_value(value)
|
||||
|
||||
def get_subkey(self, name):
|
||||
if name not in self.subkeys:
|
||||
|
@ -268,4 +266,4 @@ class WineRegistryKey(object):
|
|||
elif value.startswith('dword:'):
|
||||
return int(value[6:], 16)
|
||||
else:
|
||||
raise ValueError("TODO: finish handling other types")
|
||||
raise ValueError("Handle %s" % value)
|
||||
|
|
|
@ -63,6 +63,11 @@ class TestWineRegistry(TestCase):
|
|||
content = system_reg.render()
|
||||
self.assertEqual(content, original_content)
|
||||
|
||||
def test_can_set_value_to_existing_subkey(self):
|
||||
self.assertEqual(self.registry.query('Control Panel/Desktop', 'DragWidth'), '4')
|
||||
self.registry.set_value('Control Panel/Desktop', 'DragWidth', '8')
|
||||
self.assertEqual(self.registry.query('Control Panel/Desktop', 'DragWidth'), '8')
|
||||
|
||||
|
||||
class TestWineRegistryKey(TestCase):
|
||||
def test_creation_by_key_def_parses(self):
|
||||
|
|
Loading…
Reference in a new issue