diff --git a/lib/extensions/lettering_custom_font_dir.py b/lib/extensions/lettering_custom_font_dir.py index a8ad9d981..626517fd9 100644 --- a/lib/extensions/lettering_custom_font_dir.py +++ b/lib/extensions/lettering_custom_font_dir.py @@ -6,10 +6,10 @@ import json import os -import platformdirs from inkex import errormsg from ..i18n import _ +from ..utils import get_user_dir from .base import InkstitchExtension @@ -30,20 +30,13 @@ class LetteringCustomFontDir(InkstitchExtension): data = {'custom_font_dir': '%s' % path} - try: - config_path = platformdirs.user_config_dir('inkstitch') - except ImportError: - config_path = os.path.expanduser('~/.inkstitch') - if not os.path.exists(config_path): - os.makedirs(config_path) - config_path = os.path.join(config_path, 'custom_dirs.json') - + config_path = get_user_dir('custom_dirs.json') with open(config_path, 'w', encoding="utf8") as font_data: json.dump(data, font_data, indent=4, ensure_ascii=False) def get_custom_font_dir(): - custom_font_dir_path = os.path.join(platformdirs.user_config_dir('inkstitch'), 'custom_dirs.json') + custom_font_dir_path = get_user_dir('custom_dirs.json') try: with open(custom_font_dir_path, 'r') as custom_dirs: custom_dir = json.load(custom_dirs) diff --git a/lib/extensions/print_pdf.py b/lib/extensions/print_pdf.py index 4111a8d4f..0bdd9d814 100644 --- a/lib/extensions/print_pdf.py +++ b/lib/extensions/print_pdf.py @@ -14,7 +14,6 @@ from copy import deepcopy from datetime import date from threading import Thread -import platformdirs import wx from flask import Flask, Response, jsonify, request, send_from_directory from jinja2 import Environment, FileSystemLoader, select_autoescape @@ -27,7 +26,7 @@ from ..i18n import translation as inkstitch_translation from ..stitch_plan import stitch_groups_to_stitch_plan from ..svg import render_stitch_plan from ..threads import ThreadCatalog -from ..utils import get_resource_dir +from ..utils import get_resource_dir, get_user_dir from .base import InkstitchExtension @@ -36,12 +35,7 @@ def datetimeformat(value, format='%Y/%m/%d'): def defaults_path(): - defaults_dir = platformdirs.user_config_dir('inkstitch') - - if not os.path.exists(defaults_dir): - os.makedirs(defaults_dir) - - return os.path.join(defaults_dir, 'print_settings.json') + return get_user_dir('print_settings.json') def load_defaults(): diff --git a/lib/gui/presets.py b/lib/gui/presets.py index 0457963e1..21917d54e 100644 --- a/lib/gui/presets.py +++ b/lib/gui/presets.py @@ -4,13 +4,12 @@ # Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details. import json -import os import re import wx from ..i18n import _ -from ..utils import cache +from ..utils import cache, get_user_dir from .dialogs import info_dialog @@ -88,15 +87,7 @@ class PresetsPanel(wx.Panel): @cache def presets_path(self): - try: - import platformdirs - config_path = platformdirs.user_config_dir('inkstitch') - except ImportError: - config_path = os.path.expanduser('~/.inkstitch') - - if not os.path.exists(config_path): - os.makedirs(config_path) - return os.path.join(config_path, '%s.json' % self.suite_name) + return get_user_dir(f'{self.suite_name}.json') def _load_presets(self): try: diff --git a/lib/lettering/utils.py b/lib/lettering/utils.py index 972aff7bc..999976430 100644 --- a/lib/lettering/utils.py +++ b/lib/lettering/utils.py @@ -5,11 +5,9 @@ import os -import platformdirs - from ..extensions.lettering_custom_font_dir import get_custom_font_dir from ..lettering import Font -from ..utils import get_bundled_dir +from ..utils import get_bundled_dir, get_user_dir def get_font_list(): @@ -36,7 +34,7 @@ def get_font_paths(): font_paths = { get_bundled_dir("fonts"), os.path.expanduser("~/.inkstitch/fonts"), - os.path.join(platformdirs.user_config_dir('inkstitch'), 'fonts'), + get_user_dir('fonts'), get_custom_font_dir() } return font_paths diff --git a/lib/utils/cache.py b/lib/utils/cache.py index 76ce2416d..18f993e99 100644 --- a/lib/utils/cache.py +++ b/lib/utils/cache.py @@ -8,11 +8,12 @@ import os import pickle import sqlite3 -import platformdirs import diskcache from lib.utils.settings import global_settings +from .paths import get_user_dir + try: from functools import lru_cache except ImportError: @@ -31,16 +32,17 @@ def get_stitch_plan_cache(): global __stitch_plan_cache if __stitch_plan_cache is None: - cache_dir = os.path.join(platformdirs.user_config_dir('inkstitch'), 'cache', 'stitch_plan') + cache_dir = get_user_dir('cache') + stitch_plan_dir = os.path.join(cache_dir, 'stitch_plan') size_limit = global_settings['cache_size'] * 1024 * 1024 try: - __stitch_plan_cache = diskcache.Cache(cache_dir, size=size_limit) + __stitch_plan_cache = diskcache.Cache(stitch_plan_dir, size=size_limit) except (sqlite3.DatabaseError, sqlite3.OperationalError): # reset cache database file if it couldn't parse correctly - cache_file = os.path.join(platformdirs.user_config_dir('inkstitch'), 'cache', 'stitch_plan', 'cache.db') + cache_file = os.path.join(stitch_plan_dir, 'cache.db') if os.path.exists(cache_file): os.remove(cache_file) - __stitch_plan_cache = diskcache.Cache(cache_dir, size=size_limit) + __stitch_plan_cache = diskcache.Cache(stitch_plan_dir, size=size_limit) __stitch_plan_cache.size_limit = size_limit # reset cache if warnings appear within the files diff --git a/lib/utils/paths.py b/lib/utils/paths.py index 6eafbd773..3bc12c2ac 100755 --- a/lib/utils/paths.py +++ b/lib/utils/paths.py @@ -42,7 +42,12 @@ def get_resource_dir(name): def get_user_dir(name=None): - path = platformdirs.user_config_dir("inkstitch") + try: + path = platformdirs.user_config_dir('inkstitch') + except ImportError: + path = os.path.expanduser('~/.inkstitch') + if not os.path.exists(path): + os.makedirs(path) if name is not None: path = os.path.join(path, name)