Source code for qmm.common

# -*- coding: utf-8 -*-
# Licensed under the EUPL v1.2
# © 2019-2020 bicobus <bicobus@keemail.me>
import logging
import os
from datetime import datetime
from typing import List, Tuple, Union

from qmm import get_data_path, is_windows
from qmm.config import Config

logger = logging.getLogger(__name__)

settings = Config(
    filename="settings.json",
    defaults={
        "local_repository": None,
        "game_folder": None,
        "language": None,
    }
)


[docs]def settings_are_set(): """Returns False if either 'local_repository' or 'game_folder' isn't set.""" if not settings['local_repository'] or not settings['game_folder']: return False return True
[docs]def tools_path(): """Returns the path to the 7z executable. TODO: needs a better name """ if is_windows: return os.path.join(get_data_path('tools'), '7z.exe') return '7z'
[docs]def timestamp_to_string(timestamp): """Takes a UNIX timestamp and return a vernacular date.""" return datetime.strftime(datetime.fromtimestamp(timestamp), "%c")
[docs]def valid_suffixes( output_format="qfiledialog" ) -> Union[List[str], Tuple[str, str, str], bool]: """Properly format a list of filters for QFileDialog. Args: output_format: Accepts either 'qfiledialog' or 'pathlib'. 'pathlib' returns a simple list of suffixes, whereas 'qfiledialog' format the output to be an acceptable filter for QFileDialog. Returns: list """ if output_format not in ('qfiledialog', 'pathlib'): return False labels = ('7Zip Files', 'Zip Files', 'Rar Files') suffixes = ('.7z', '.zip', '.rar') if output_format == "qfiledialog": filter_on, tpl = [], [] for s in suffixes: tpl.append(f"*{s}") string = 'All Archives (' + " ".join(tpl) + ')' filter_on.append(string) for label, s in zip(labels, tpl): filter_on.append(f"{label} ({s})") return filter_on return suffixes