feat: rename PRESET_DIR to presets_dir, and make it more central

This commit is contained in:
tfuxu 2022-10-02 03:57:29 +02:00
parent badee5681f
commit 30a5891558
5 changed files with 63 additions and 75 deletions

View file

@ -45,13 +45,7 @@ from .preferences import GradiencePreferencesWindow
from .modules.utils import to_slug_case, buglog
from .plugins_list import GradiencePluginsList
from .presets_manager_window import GradiencePresetWindow
from .modules.preset import Preset
PRESET_DIR = os.path.join(
os.environ.get("XDG_CONFIG_HOME", os.environ["HOME"] + "/.config"),
"presets",
)
from .modules.preset import Preset, presets_dir
class GradienceApplication(Adw.Application):
@ -164,11 +158,11 @@ class GradienceApplication(Adw.Application):
if self.props.active_window.presets_menu.get_n_items() > 1:
self.props.active_window.presets_menu.remove(1)
if not os.path.exists(PRESET_DIR):
os.makedirs(PRESET_DIR)
if not os.path.exists(presets_dir):
os.makedirs(presets_dir)
self.custom_presets = {"user": {}}
for repo in Path(PRESET_DIR).iterdir():
for repo in Path(presets_dir).iterdir():
if repo.is_dir(): # repo
presets_list = {}
for file_name in repo.iterdir():
@ -176,7 +170,7 @@ class GradienceApplication(Adw.Application):
if file_name.endswith(".json"):
try:
with open(
os.path.join(PRESET_DIR, file_name),
os.path.join(presets_dir, file_name),
"r",
encoding="utf-8",
) as file:
@ -199,15 +193,15 @@ class GradienceApplication(Adw.Application):
buglog("file")
# keep compatiblity with old presets
if repo.name.endswith(".json"):
if not os.path.isdir(os.path.join(PRESET_DIR, "user")):
os.mkdir(os.path.join(PRESET_DIR, "user"))
if not os.path.isdir(os.path.join(presets_dir, "user")):
os.mkdir(os.path.join(presets_dir, "user"))
os.rename(repo, os.path.join(
PRESET_DIR, "user", repo.name))
presets_dir, "user", repo.name))
try:
with open(
os.path.join(PRESET_DIR, "user", repo),
os.path.join(presets_dir, "user", repo),
"r",
encoding="utf-8",
) as file:
@ -254,12 +248,12 @@ class GradienceApplication(Adw.Application):
custom_menu_section.append_item(menu_item)
except KeyError:
if not os.path.exists(os.path.join(PRESET_DIR, "user")):
os.makedirs(os.path.join(PRESET_DIR, "user"))
if not os.path.exists(os.path.join(PRESET_DIR, "curated")):
os.makedirs(os.path.join(PRESET_DIR, "curated"))
if not os.path.exists(os.path.join(PRESET_DIR, "official")):
os.makedirs(os.path.join(PRESET_DIR, "official"))
if not os.path.exists(os.path.join(presets_dir, "user")):
os.makedirs(os.path.join(presets_dir, "user"))
if not os.path.exists(os.path.join(presets_dir, "curated")):
os.makedirs(os.path.join(presets_dir, "curated"))
if not os.path.exists(os.path.join(presets_dir, "official")):
os.makedirs(os.path.join(presets_dir, "official"))
open_in_file_manager_item = Gio.MenuItem()
open_in_file_manager_item.set_label(_("Open in File Manager"))
open_in_file_manager_item.set_action_and_target_value(

View file

@ -1,10 +1,29 @@
from ..settings_schema import settings_schema
# preset.py
#
# Change the look of Adwaita, with ease
# Copyright (C) 2022 Gradience Team
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
import json
import os
from ..settings_schema import settings_schema
from .utils import buglog, to_slug_case
PRESET_DIR = os.path.join(
presets_dir = os.path.join(
os.environ.get("XDG_CONFIG_HOME", os.environ["HOME"] + "/.config"),
"presets",
)
@ -35,7 +54,7 @@ class Preset:
self.repo = repo
if preset_path is None:
self.preset_path = os.path.join(
PRESET_DIR, repo, self.name + ".json")
presets_dir, repo, self.name + ".json")
else:
self.preset_path = preset_path
self.load_preset()
@ -71,18 +90,18 @@ class Preset:
def save_preset(self, name=None, plugins_list=None, to=None):
if to is None:
self.preset_path = os.path.join(
PRESET_DIR, self.repo, self.name + ".json")
presets_dir, self.repo, self.name + ".json")
else:
self.preset_path = to
if not os.path.exists(
os.path.join(
PRESET_DIR,
presets_dir,
"user",
)
):
os.makedirs(
os.path.join(
PRESET_DIR,
presets_dir,
"user",
)
)

View file

@ -1,19 +1,14 @@
from .utils import to_slug_case
from .preset import Preset
from .preset import Preset, presets_dir
import os
PRESET_DIR = os.path.join(
os.environ.get("XDG_CONFIG_HOME", os.environ["HOME"] + "/.config"),
"presets",
)
class Repo:
presets = {}
def __init__(self, name):
self.name = to_slug_case(name)
self.path = os.path.join(PRESET_DIR, name)
self.path = os.path.join(presets_dir, name)
self.presets = self.get_presets()
def get_presets(self):

View file

@ -20,7 +20,7 @@ import os
from gi.repository import Gtk, Adw, Xdp, XdpGtk4
from gradience.modules.custom_presets import PRESET_DIR
from gradience.modules.preset import presets_dir
from .constants import rootdir
from .modules.utils import to_slug_case, buglog
@ -113,9 +113,7 @@ class GradiencePresetRow(Adw.ExpanderRow):
self.app.load_preset_from_file(
os.path.join(
os.environ.get("XDG_CONFIG_HOME",
os.environ["HOME"] + "/.config"),
"presets",
presets_dir,
self.prefix,
to_slug_case(self.name) + ".json",
)
@ -170,16 +168,12 @@ class GradiencePresetRow(Adw.ExpanderRow):
try:
os.rename(
os.path.join(
os.environ.get("XDG_CONFIG_HOME",
os.environ["HOME"] + "/.config"),
"presets",
presets_dir,
self.prefix,
self.file_name + ".json",
),
os.path.join(
os.environ.get("XDG_CONFIG_HOME",
os.environ["HOME"] + "/.config"),
"presets",
presets_dir,
self.prefix,
self.file_name + ".json.to_delete",
),
@ -199,7 +193,7 @@ class GradiencePresetRow(Adw.ExpanderRow):
self.preset.save_preset()
os.remove(
os.path.join(
PRESET_DIR,
presets_dir,
self.prefix,
self.file_name + ".json",
)
@ -212,10 +206,7 @@ class GradiencePresetRow(Adw.ExpanderRow):
try:
os.remove(
os.path.join(
os.environ.get(
"XDG_CONFIG_HOME", os.environ["HOME"] + "/.config"
),
"presets",
presets_dir,
self.prefix,
self.file_name + ".json.to_delete",
)
@ -232,18 +223,12 @@ class GradiencePresetRow(Adw.ExpanderRow):
try:
os.rename(
os.path.join(
os.environ.get(
"XDG_CONFIG_HOME", os.environ["HOME"] + "/.config"
),
"presets",
presets_dir,
self.prefix,
self.file_name + ".json.to_delete",
),
os.path.join(
os.environ.get(
"XDG_CONFIG_HOME", os.environ["HOME"] + "/.config"
),
"presets",
presets_dir,
self.prefix,
self.file_name + ".json",
),

View file

@ -20,6 +20,7 @@ import os
import shutil
import json
from collections import OrderedDict
from pathlib import Path
from gi.repository import Gtk, Adw, GLib
@ -29,9 +30,9 @@ from .builtin_preset_row import GradienceBuiltinPresetRow
from .explore_preset_row import GradienceExplorePresetRow
from .modules.custom_presets import fetch_presets
from .repo_row import GradienceRepoRow
from .modules.preset import presets_dir
from .modules.utils import buglog
from .constants import rootdir
from collections import OrderedDict
@Gtk.Template(resource_path=f"{rootdir}/ui/presets_manager_window.ui")
class GradiencePresetWindow(Adw.Window):
@ -283,11 +284,7 @@ class GradiencePresetWindow(Adw.Window):
shutil.copy(
self.preset_path.get_path(),
os.path.join(
os.environ.get(
"XDG_CONFIG_HOME", os.environ["HOME"] +
"/.config"
),
"presets",
presets_dir,
preset_file,
),
)
@ -302,12 +299,9 @@ class GradiencePresetWindow(Adw.Window):
def reload_pref_group(self):
buglog("reload")
preset_directory = os.path.join(
os.environ.get("XDG_CONFIG_HOME", os.environ["HOME"] + "/.config"),
"presets",
)
if not os.path.exists(preset_directory):
os.makedirs(preset_directory)
if not os.path.exists(presets_dir):
os.makedirs(presets_dir)
self.custom_presets = {"user": {}}
self.builtin_presets = {
@ -315,7 +309,8 @@ class GradiencePresetWindow(Adw.Window):
"adwaita-dark": "Adwaita Dark",
"pretty-purple": "Pretty Purple",
}
for repo in Path(preset_directory).iterdir():
for repo in Path(presets_dir).iterdir():
if repo.is_dir(): # repo
presets_list = {}
for file_name in repo.iterdir():
@ -323,7 +318,7 @@ class GradiencePresetWindow(Adw.Window):
if file_name.endswith(".json"):
try:
with open(
os.path.join(preset_directory, file_name),
os.path.join(presets_dir, file_name),
"r",
encoding="utf-8",
) as file:
@ -345,15 +340,15 @@ class GradiencePresetWindow(Adw.Window):
buglog("file")
# keep compatiblity with old presets
if repo.name.endswith(".json"):
if not os.path.isdir(os.path.join(preset_directory, "user")):
os.mkdir(os.path.join(preset_directory, "user"))
if not os.path.isdir(os.path.join(presets_dir, "user")):
os.mkdir(os.path.join(presets_dir, "user"))
os.rename(repo, os.path.join(
preset_directory, "user", repo.name))
presets_dir, "user", repo.name))
try:
with open(
os.path.join(preset_directory, "user", repo),
os.path.join(presets_dir, "user", repo),
"r",
encoding="utf-8",
) as file: