From bc3844c1a9d45b21e0dc90b192d7b347595c40a5 Mon Sep 17 00:00:00 2001 From: Romain Lebbadi-Breteau Date: Sun, 3 May 2020 16:17:22 -0400 Subject: [PATCH] add settings --- .gitignore | 1 + CHANGELOG.md | 1 + src/api.py | 2 ++ src/settings.py | 40 ++++++++++++++++++++++++++++++++++++++++ src/translate.py | 21 ++++++++++++++------- 5 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 src/settings.py diff --git a/.gitignore b/.gitignore index fbd799d..41d4ce6 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ __pycache__ *.pyc .pytest_cache trust.txt +settings.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index ddade80..2dbe25e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Trust functionnality - Translation of all messages in French - Translation of all messages in English +- Settings ### Fixed - Messages received when connexion not trusted are buffered instead of diplayed diff --git a/src/api.py b/src/api.py index bd726f8..c7aa596 100644 --- a/src/api.py +++ b/src/api.py @@ -3,6 +3,7 @@ from backend import TuringChat from trust import TrustManager from translate import tr +from settings import Settings import re @@ -20,6 +21,7 @@ def __init__(self, uiPrintMessage, sendQuit=None): self.otherUsername = None self.trustManager = TrustManager(self.printMessage) self.msgBuffer = [] + self.settings = Settings(self.printMessage) def printMessage(self, text, message=False, username=None): if message and not self.trustManager.connexionTrusted(): diff --git a/src/settings.py b/src/settings.py new file mode 100644 index 0000000..528959f --- /dev/null +++ b/src/settings.py @@ -0,0 +1,40 @@ +import os +import yaml + +class Settings(): + def __init__(self, printMessage): + self.settingsFile = "settings.yaml" + self.printMessage = printMessage + self.settings = self.getSettingsFile() + if not self.settings: + self.settings = self.getDefaultSettings() + self.saveSettings() + + def getDefaultSettings(self): + return { + "username": "User", + "language": "fr" + } + + def getSettingsFile(self): + if os.path.isfile(self.settingsFile): + with open(self.settingsFile, "r") as f: + try: + return yaml.safe_load(f) + except yaml.YAMLError as exc: + self.printMessage(exc) + return None + + def setSetting(self, setting, value): + self.settings[setting] = value + self.saveSettings() + + def getSetting(self, setting): + return self.settings[setting] + + def saveSettings(self): + with open(self.settingsFile, "w") as f: + try: + yaml.safe_dump(self.settings, f) + except yaml.YAMLError as exc: + self.printMessage(exc) diff --git a/src/translate.py b/src/translate.py index 86b818f..f3c7e42 100644 --- a/src/translate.py +++ b/src/translate.py @@ -1,14 +1,19 @@ import yaml import os -script_dir = os.path.dirname(__file__) -rel_path = "translations/fr.yaml" +data = {} -with open(os.path.join(script_dir, rel_path), 'r') as stream: - try: - data = yaml.safe_load(stream) - except yaml.YAMLError as exc: - print(exc) +def loadMessages(language="fr"): + global data + + script_dir = os.path.dirname(__file__) + rel_path = "translations/" + language + ".yaml" + + with open(os.path.join(script_dir, rel_path), 'r') as stream: + try: + data = yaml.safe_load(stream) + except yaml.YAMLError as exc: + print(exc) def getMessage(data, keys): if isinstance(data, str): @@ -19,3 +24,5 @@ def getMessage(data, keys): def tr(message): keys = message.split(".") return getMessage(data, keys) + +loadMessages()