Files
krowlog/settingsstore.py
Andreas Huber 4f50fd03a4 more font_size to a new config file for session data
We need config and session data.
config is what the user changes. Only read by the app.
session is what the app remembers. Read and written by the app.
2021-10-29 09:53:53 +02:00

58 lines
1.6 KiB
Python

import os
import sys
from typing import Callable
from settings import Settings
from pathlib import Path
from os.path import join, isfile
from configparser import ConfigParser
class SettingsStore():
def __init__(self):
pass
@staticmethod
def _config_file() -> str:
return join(Path.home(), ".ravenlog", "settings.ini")
@staticmethod
def _session_file() -> str:
if sys.platform == 'win32' or sys.platform == 'cygwin':
return join(Path.home(), "AppData", "Local", "ravenlog", "session.ini")
else:
return join(Path.home(), ".local", "share", "ravenlog", "session.ini")
@staticmethod
def load() -> Settings:
config = SettingsStore._load_config()
session = SettingsStore._load_session()
return Settings(config, session)
@staticmethod
def _load_config() -> ConfigParser:
config_file = SettingsStore._config_file()
config = ConfigParser()
config.read(config_file)
return config
@staticmethod
def _load_session() -> ConfigParser:
session_file = SettingsStore._session_file()
session = ConfigParser()
# apply default settings
session.add_section('general')
session.set('general', 'font_size', '12')
session.read(session_file)
return session
@staticmethod
def save(settings: Settings):
session_file = SettingsStore._session_file()
dir = os.path.dirname(session_file)
os.makedirs(dir, exist_ok=True)
with open(session_file, 'w+') as fp:
settings.session.write(fp)