Recursively merge default and user config
This commit is contained in:
parent
efa4ad0ae0
commit
cf5d76dd10
|
@ -11,6 +11,7 @@ from dataclasses import dataclass, field
|
||||||
|
|
||||||
from .backend import Backend
|
from .backend import Backend
|
||||||
from .theme_parser import convert_to_qml
|
from .theme_parser import convert_to_qml
|
||||||
|
from .utils import dict_update_recursive
|
||||||
|
|
||||||
JsonData = Dict[str, Any]
|
JsonData = Dict[str, Any]
|
||||||
|
|
||||||
|
@ -59,7 +60,9 @@ class JSONConfigFile(ConfigFile):
|
||||||
except json.JSONDecodeError:
|
except json.JSONDecodeError:
|
||||||
data = {}
|
data = {}
|
||||||
|
|
||||||
return {**await self.default_data(), **data}
|
all_data = await self.default_data()
|
||||||
|
dict_update_recursive(all_data, data)
|
||||||
|
return all_data
|
||||||
|
|
||||||
|
|
||||||
async def write(self, data: JsonData) -> None:
|
async def write(self, data: JsonData) -> None:
|
||||||
|
@ -108,6 +111,7 @@ class UISettings(JSONConfigFile):
|
||||||
"scrollUp": ["Alt+Up", "Alt+K"],
|
"scrollUp": ["Alt+Up", "Alt+K"],
|
||||||
"scrollDown": ["Alt+Down", "Alt+J"],
|
"scrollDown": ["Alt+Down", "Alt+J"],
|
||||||
"startDebugger": ["Alt+Shift+D"],
|
"startDebugger": ["Alt+Shift+D"],
|
||||||
|
"reloadConfig": ["Alt+R"],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
# Copyright 2019 miruka
|
# Copyright 2019 miruka
|
||||||
# This file is part of harmonyqml, licensed under LGPLv3.
|
# This file is part of harmonyqml, licensed under LGPLv3.
|
||||||
|
|
||||||
from enum import Enum
|
import collections
|
||||||
from enum import auto as autostr
|
from enum import auto as autostr
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
auto = autostr # pylint: disable=invalid-name
|
auto = autostr # pylint: disable=invalid-name
|
||||||
|
|
||||||
|
@ -11,3 +12,13 @@ class AutoStrEnum(Enum):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _generate_next_value_(name, *_):
|
def _generate_next_value_(name, *_):
|
||||||
return name
|
return name
|
||||||
|
|
||||||
|
|
||||||
|
def dict_update_recursive(dict1, dict2):
|
||||||
|
# https://gist.github.com/angstwad/bf22d1822c38a92ec0a9
|
||||||
|
for k in dict2:
|
||||||
|
if (k in dict1 and isinstance(dict1[k], dict) and
|
||||||
|
isinstance(dict2[k], collections.Mapping)):
|
||||||
|
dict_update_recursive(dict1[k], dict2[k])
|
||||||
|
else:
|
||||||
|
dict1[k] = dict2[k]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user