diff --git a/.gitignore b/.gitignore index 7d2394a5..388a9457 100644 --- a/.gitignore +++ b/.gitignore @@ -431,5 +431,5 @@ $RECYCLE.BIN/ # The flatpak pip generator (needed for GH-Actions) flatpak-pip-generator -# Don't include constants.py in VCS since that's a generated file -gradience/constants.py +# Don't include constants.py in VCS since that's a generated file +gradience/backend/constants.py diff --git a/gradience/Structure.md b/gradience/Structure.md deleted file mode 100644 index 675d6159..00000000 --- a/gradience/Structure.md +++ /dev/null @@ -1,9 +0,0 @@ -## Source code structure - -``` -gradience/ - main source code folder, contains majority of Python code -| -|- ui/ - contains logic code for Gradience widgets (you can find .ui files for widgets in data/ui folder) -| -|- utils/ - contains helpers for the rest of the codebase -``` diff --git a/gradience/__init__.py b/gradience/__init__.py index 2f4793b2..e69de29b 100644 --- a/gradience/__init__.py +++ b/gradience/__init__.py @@ -1,17 +0,0 @@ -# __init__.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 . diff --git a/gradience/backend/__init__.py b/gradience/backend/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/gradience/constants.py.in b/gradience/backend/constants.py.in similarity index 100% rename from gradience/constants.py.in rename to gradience/backend/constants.py.in diff --git a/gradience/utils/css.py b/gradience/backend/css_parser.py similarity index 95% rename from gradience/utils/css.py rename to gradience/backend/css_parser.py index 4ac0c994..6d2ae0e4 100644 --- a/gradience/utils/css.py +++ b/gradience/backend/css_parser.py @@ -1,4 +1,4 @@ -# css.py +# css_parser.py # # Change the look of Adwaita, with ease # Copyright (C) 2022 Gradience Team @@ -20,7 +20,7 @@ import re # Adwaita named palette colors dict -COLORS = [ +adw_colors = [ "blue_", "green_", "yellow_", @@ -41,7 +41,7 @@ def parse_css(path): variables = {} palette = {} - for color in COLORS: + for color in adw_colors: palette[color] = {} with open(path, "r", encoding="utf-8") as sheet: @@ -51,7 +51,7 @@ def parse_css(path): if cdefine_match != None: # If @define-color variable declarations were found palette_part = cdefine_match.__getitem__(1) # Get the second item of the re.Match object name, color = palette_part.split(" ", 1)[1].split(" ", 1) - for color_name in COLORS: + for color_name in adw_colors: if name.startswith(color_name): # Palette colors palette[name[:-1]][name[-1:]] = color[:-1] break diff --git a/gradience/utils/flatpak_overrides.py b/gradience/backend/flatpak_overrides.py similarity index 99% rename from gradience/utils/flatpak_overrides.py rename to gradience/backend/flatpak_overrides.py index 4be69463..1f58d012 100644 --- a/gradience/utils/flatpak_overrides.py +++ b/gradience/backend/flatpak_overrides.py @@ -20,7 +20,7 @@ import os from gi.repository import GLib, Gio, Adw -from gradience.utils.utils import buglog +from gradience.backend.utils.common import buglog """ Custom exception class """ diff --git a/gradience/backend/meson.build b/gradience/backend/meson.build new file mode 100644 index 00000000..bedc15f1 --- /dev/null +++ b/gradience/backend/meson.build @@ -0,0 +1,31 @@ +backenddir = 'gradience/backend' + +configure_file( + input: 'constants.py.in', + output: 'constants.py', + configuration: configuration_data({ + 'APP_ID': APPLICATION_ID, + 'RELEASE_VER': meson.project_version(), + 'VERSION': meson.project_version() + VERSION_SUFFIX, + 'BUILD_TYPE': get_option('buildtype'), + 'PROJECT_URL': PROJECT_URL, + 'BUGTRACKER_URL': BUGTRACKER_URL, + 'HELP_URL': HELP_URL, + 'TRANSLATE_URL': TRANSLATE_URL, + 'PKGDATA_DIR': PKGDATA_DIR, + 'LOCALE_DIR': conf.get('LOCALE_DIR'), + }), + install: true, + install_dir: PY_INSTALLDIR.get_install_dir() / backenddir, +) + +subdir('models') +subdir('utils') + +gradience_sources = [ + '__init__.py', + 'css_parser.py', + 'flatpak_overrides.py', + 'preset_downloader.py' +] +PY_INSTALLDIR.install_sources(gradience_sources, subdir: backenddir) diff --git a/gradience/backend/models/__init__.py b/gradience/backend/models/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/gradience/backend/models/meson.build b/gradience/backend/models/meson.build new file mode 100644 index 00000000..e64a49db --- /dev/null +++ b/gradience/backend/models/meson.build @@ -0,0 +1,8 @@ +modelsdir = 'gradience/backend/models' + +gradience_sources = [ + '__init__.py', + 'preset.py', + 'repo.py' +] +PY_INSTALLDIR.install_sources(gradience_sources, subdir: modelsdir) diff --git a/gradience/utils/preset.py b/gradience/backend/models/preset.py similarity index 97% rename from gradience/utils/preset.py rename to gradience/backend/models/preset.py index 6f99a087..a6faf701 100644 --- a/gradience/utils/preset.py +++ b/gradience/backend/models/preset.py @@ -19,8 +19,8 @@ import json import os -from gradience.settings_schema import settings_schema -from gradience.utils.utils import buglog, to_slug_case +from gradience.frontend.settings_schema import settings_schema +from gradience.backend.utils.common import buglog, to_slug_case presets_dir = os.path.join( diff --git a/gradience/utils/repo.py b/gradience/backend/models/repo.py similarity index 90% rename from gradience/utils/repo.py rename to gradience/backend/models/repo.py index b3ed9cc4..b6d9bf4b 100644 --- a/gradience/utils/repo.py +++ b/gradience/backend/models/repo.py @@ -16,10 +16,11 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -from gradience.utils.utils import to_slug_case -from gradience.utils.preset import Preset, presets_dir import os +from gradience.backend.utils.common import to_slug_case +from gradience.backend.models.preset import Preset, presets_dir + class Repo: presets = {} diff --git a/gradience/utils/custom_presets.py b/gradience/backend/preset_downloader.py similarity index 95% rename from gradience/utils/custom_presets.py rename to gradience/backend/preset_downloader.py index 18649f8b..290b2f60 100644 --- a/gradience/utils/custom_presets.py +++ b/gradience/backend/preset_downloader.py @@ -1,4 +1,4 @@ -# custom_presets.py +# preset_downloader.py # # Change the look of Adwaita, with ease # Copyright (C) 2022 Gradience Team @@ -21,8 +21,8 @@ import json from gi.repository import GLib, Soup -from gradience.utils.preset import presets_dir -from gradience.utils.utils import to_slug_case, buglog +from gradience.backend.models.preset import presets_dir +from gradience.backend.utils.common import to_slug_case, buglog # Open Soup3 session diff --git a/gradience/backend/struct.md b/gradience/backend/struct.md new file mode 100644 index 00000000..fcd9f59b --- /dev/null +++ b/gradience/backend/struct.md @@ -0,0 +1,4 @@ +## `backend/` directory structure: + +- `models/` - objects containing various types of data, with logic to manipulate them +- `utils/` - general purpose utility modules diff --git a/gradience/backend/utils/__init__.py b/gradience/backend/utils/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/gradience/utils/utils.py b/gradience/backend/utils/common.py similarity index 96% rename from gradience/utils/utils.py rename to gradience/backend/utils/common.py index d304d21b..41d2ca96 100644 --- a/gradience/utils/utils.py +++ b/gradience/backend/utils/common.py @@ -1,4 +1,4 @@ -# utils.py +# common.py # # Change the look of Adwaita, with ease # Copyright (C) 2022 Gradience Team @@ -23,7 +23,7 @@ import os from subprocess import run from anyascii import anyascii -from gradience.constants import build_type +from gradience.backend.constants import build_type if build_type == "debug": diff --git a/gradience/backend/utils/meson.build b/gradience/backend/utils/meson.build new file mode 100644 index 00000000..588667a5 --- /dev/null +++ b/gradience/backend/utils/meson.build @@ -0,0 +1,7 @@ +utilsdir = 'gradience/backend/utils' + +gradience_sources = [ + '__init__.py', + 'common.py' +] +PY_INSTALLDIR.install_sources(gradience_sources, subdir: utilsdir) diff --git a/gradience/frontend/__init__.py b/gradience/frontend/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/gradience/frontend/dialogs/__init__.py b/gradience/frontend/dialogs/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/gradience/ui/app_type_dialog.py b/gradience/frontend/dialogs/app_type_dialog.py similarity index 97% rename from gradience/ui/app_type_dialog.py rename to gradience/frontend/dialogs/app_type_dialog.py index 9dd9e6a4..8e5d44d2 100644 --- a/gradience/ui/app_type_dialog.py +++ b/gradience/frontend/dialogs/app_type_dialog.py @@ -18,7 +18,7 @@ from gi.repository import Gtk, Adw -from gradience.constants import rootdir +from gradience.backend.constants import rootdir @Gtk.Template(resource_path=f"{rootdir}/ui/app_type_dialog.ui") diff --git a/gradience/frontend/dialogs/meson.build b/gradience/frontend/dialogs/meson.build new file mode 100644 index 00000000..824213f0 --- /dev/null +++ b/gradience/frontend/dialogs/meson.build @@ -0,0 +1,8 @@ +dialogsdir = 'gradience/frontend/dialogs' + +gradience_sources = [ + '__init__.py', + 'app_type_dialog.py', + 'no_plugin_window.py' +] +PY_INSTALLDIR.install_sources(gradience_sources, subdir: dialogsdir) diff --git a/gradience/ui/no_plugin_window.py b/gradience/frontend/dialogs/no_plugin_window.py similarity index 95% rename from gradience/ui/no_plugin_window.py rename to gradience/frontend/dialogs/no_plugin_window.py index bf47b0ca..fd89a077 100644 --- a/gradience/ui/no_plugin_window.py +++ b/gradience/frontend/dialogs/no_plugin_window.py @@ -18,7 +18,7 @@ from gi.repository import Gtk, Adw -from gradience.constants import rootdir +from gradience.backend.constants import rootdir @Gtk.Template(resource_path=f"{rootdir}/ui/no_plugin_window.ui") diff --git a/gradience/gradience.in b/gradience/frontend/gradience.in similarity index 91% rename from gradience/gradience.in rename to gradience/frontend/gradience.in index 7bc7ec96..19439cae 100755 --- a/gradience/gradience.in +++ b/gradience/frontend/gradience.in @@ -35,8 +35,8 @@ if is_local: os.environ["XDG_DATA_DIRS"] = '@SCHEMAS_DIR@:' + os.environ.get("XDG_DATA_DIRS", "") shutil.copyfile( - os.path.join('@BUILD_DIR@', "gradience", "constants.py"), - os.path.join('@SOURCE_DIR@', "gradience", "constants.py") + os.path.join('@BUILD_DIR@', "gradience/backend", "constants.py"), + os.path.join('@SOURCE_DIR@', "gradience/backend", "constants.py") ) pkgdatadir = '@PKGDATA_DIR@' @@ -67,5 +67,5 @@ if __name__ == '__main__': sys.path.insert(1, "/usr/local/lib/python3.10/site-packages") - from gradience import main + from gradience.frontend import main sys.exit(main.main()) diff --git a/gradience/main.py b/gradience/frontend/main.py similarity index 98% rename from gradience/main.py rename to gradience/frontend/main.py index d3458be6..54e0b63a 100644 --- a/gradience/main.py +++ b/gradience/frontend/main.py @@ -23,29 +23,23 @@ import threading from pathlib import Path from material_color_utilities_python import * - from gi.repository import Gtk, Gdk, Gio, Adw, GLib, Xdp, XdpGtk4 -from gradience.ui.window import GradienceMainWindow -from gradience.ui.welcome_window import GradienceWelcomeWindow -from gradience.ui.app_type_dialog import GradienceAppTypeDialog -from gradience.ui.custom_css_group import GradienceCustomCSSGroup -from gradience.ui.presets_manager_window import GradiencePresetWindow -from gradience.ui.preferences_window import GradiencePreferencesWindow -from gradience.utils.css import parse_css -from gradience.utils.utils import to_slug_case, buglog, run_command -from gradience.utils.preset import Preset, presets_dir -from gradience.settings_schema import settings_schema -from gradience.plugins_list import GradiencePluginsList -from gradience.constants import ( - rootdir, - app_id, - rel_ver, - version, - bugtracker_url, - help_url, - project_url, -) +from gradience.backend.css_parser import parse_css +from gradience.backend.models.preset import Preset, presets_dir +from gradience.backend.utils.common import to_slug_case, buglog, run_command +from gradience.backend.constants import * + +from gradience.frontend.views.main_window import GradienceMainWindow +from gradience.frontend.views.plugins_list import GradiencePluginsList +from gradience.frontend.views.welcome_window import GradienceWelcomeWindow +from gradience.frontend.views.presets_manager_window import GradiencePresetWindow +from gradience.frontend.views.preferences_window import GradiencePreferencesWindow + +from gradience.frontend.dialogs.app_type_dialog import GradienceAppTypeDialog +from gradience.frontend.widgets.custom_css_group import GradienceCustomCSSGroup + +from gradience.frontend.settings_schema import settings_schema class GradienceApplication(Adw.Application): diff --git a/gradience/frontend/meson.build b/gradience/frontend/meson.build new file mode 100644 index 00000000..89be3ed8 --- /dev/null +++ b/gradience/frontend/meson.build @@ -0,0 +1,26 @@ +frontenddir = 'gradience/frontend' + +configure_file( + input: 'gradience.in', + output: 'gradience', + configuration: conf, + install_dir: get_option('bindir') +) + +configure_file( + input: 'gradience.in', + output: 'local-gradience', + configuration: local_conf +) + +subdir('dialogs') +subdir('utils') +subdir('views') +subdir('widgets') + +gradience_sources = [ + '__init__.py', + 'main.py', + 'settings_schema.py' +] +PY_INSTALLDIR.install_sources(gradience_sources, subdir: frontenddir) diff --git a/gradience/settings_schema.py b/gradience/frontend/settings_schema.py similarity index 100% rename from gradience/settings_schema.py rename to gradience/frontend/settings_schema.py diff --git a/gradience/frontend/struct.md b/gradience/frontend/struct.md new file mode 100644 index 00000000..97dee56b --- /dev/null +++ b/gradience/frontend/struct.md @@ -0,0 +1,6 @@ +## `frontend/` directory structure: + +- `dialogs/` - message boxes and simple popup windows +- `utils/` - general purpose utility modules for UI related stuff +- `views/` - more extensive widgets (eg. widget groups, lists) and windows +- `widgets/` - general purpose graphical widgets diff --git a/gradience/frontend/utils/__init__.py b/gradience/frontend/utils/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/gradience/frontend/utils/meson.build b/gradience/frontend/utils/meson.build new file mode 100644 index 00000000..fa585442 --- /dev/null +++ b/gradience/frontend/utils/meson.build @@ -0,0 +1,7 @@ +utilsdir = 'gradience/frontend/utils' + +gradience_sources = [ + '__init__.py', + 'run_async.py' +] +PY_INSTALLDIR.install_sources(gradience_sources, subdir: utilsdir) diff --git a/gradience/utils/run_async.py b/gradience/frontend/utils/run_async.py similarity index 97% rename from gradience/utils/run_async.py rename to gradience/frontend/utils/run_async.py index 18737b23..5d6e46a3 100644 --- a/gradience/utils/run_async.py +++ b/gradience/frontend/utils/run_async.py @@ -22,7 +22,7 @@ import traceback from gi.repository import GLib -from gradience.utils.utils import buglog +from gradience.backend.utils.common import buglog class RunAsync(threading.Thread): diff --git a/gradience/frontend/views/__init__.py b/gradience/frontend/views/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/gradience/ui/window.py b/gradience/frontend/views/main_window.py similarity index 96% rename from gradience/ui/window.py rename to gradience/frontend/views/main_window.py index b692b752..d3c99c76 100644 --- a/gradience/ui/window.py +++ b/gradience/frontend/views/main_window.py @@ -1,4 +1,4 @@ -# window.py +# main_window.py # # Change the look of Adwaita, with ease # Copyright (C) 2022 Gradience Team @@ -18,18 +18,18 @@ import os -from gi.repository import Gtk, Adw, Gio - from svglib.svglib import svg2rlg from reportlab.graphics import renderPM from material_color_utilities_python import * +from gi.repository import Gtk, Adw, Gio -from gradience.ui.error_list_row import GradienceErrorListRow -from gradience.ui.palette_shades import GradiencePaletteShades -from gradience.ui.option_row import GradienceOptionRow -from gradience.utils.utils import buglog -from gradience.settings_schema import settings_schema -from gradience.constants import rootdir, app_id, build_type +from gradience.backend.utils.common import buglog +from gradience.backend.constants import rootdir, app_id, build_type + +from gradience.frontend.widgets.error_list_row import GradienceErrorListRow +from gradience.frontend.widgets.palette_shades import GradiencePaletteShades +from gradience.frontend.widgets.option_row import GradienceOptionRow +from gradience.frontend.settings_schema import settings_schema @Gtk.Template(resource_path=f"{rootdir}/ui/window.ui") @@ -118,7 +118,7 @@ class GradienceMainWindow(Adw.ApplicationWindow): image_basename = self.monet_image_file.get_basename() self.monet_file_chooser_button.set_label(image_basename) self.monet_file_chooser_button.set_tooltip_text(image_basename) - + self.monet_file_chooser_dialog.hide() if response == Gtk.ResponseType.ACCEPT: diff --git a/gradience/frontend/views/meson.build b/gradience/frontend/views/meson.build new file mode 100644 index 00000000..965b60bb --- /dev/null +++ b/gradience/frontend/views/meson.build @@ -0,0 +1,12 @@ +viewsdir = 'gradience/frontend/views' + +gradience_sources = [ + '__init__.py', + 'main_window.py', + 'plugins_list.py', + 'preferences_window.py', + 'presets_manager_window.py', + 'share_window.py', + 'welcome_window.py' +] +PY_INSTALLDIR.install_sources(gradience_sources, subdir: viewsdir) diff --git a/gradience/plugins_list.py b/gradience/frontend/views/plugins_list.py similarity index 96% rename from gradience/plugins_list.py rename to gradience/frontend/views/plugins_list.py index 47e8d6ff..23fdc539 100644 --- a/gradience/plugins_list.py +++ b/gradience/frontend/views/plugins_list.py @@ -21,9 +21,9 @@ import os from gi.repository import Adw, GLib from yapsy.PluginManager import PluginManager -from gradience.ui.plugin_row import GradiencePluginRow -from gradience.utils.utils import buglog -from gradience.constants import pkgdatadir +from gradience.frontend.widgets.plugin_row import GradiencePluginRow +from gradience.backend.utils.common import buglog +from gradience.backend.constants import pkgdatadir USER_PLUGIN_DIR = os.path.join( diff --git a/gradience/ui/preferences_window.py b/gradience/frontend/views/preferences_window.py similarity index 95% rename from gradience/ui/preferences_window.py rename to gradience/frontend/views/preferences_window.py index a55ab9e5..1f3c68cb 100644 --- a/gradience/ui/preferences_window.py +++ b/gradience/frontend/views/preferences_window.py @@ -18,16 +18,16 @@ from gi.repository import Gtk, Adw -from gradience.constants import rootdir -from gradience.utils.flatpak_overrides import ( +from gradience.backend.constants import rootdir +from gradience.backend.flatpak_overrides import ( create_gtk_user_override, remove_gtk_user_override, ) -from gradience.utils.flatpak_overrides import ( +from gradience.backend.flatpak_overrides import ( create_gtk_global_override, remove_gtk_global_override, ) -from gradience.utils.utils import buglog +from gradience.backend.utils.common import buglog @Gtk.Template(resource_path=f"{rootdir}/ui/preferences_window.ui") diff --git a/gradience/ui/presets_manager_window.py b/gradience/frontend/views/presets_manager_window.py similarity index 96% rename from gradience/ui/presets_manager_window.py rename to gradience/frontend/views/presets_manager_window.py index 1df2f946..478e2d5b 100644 --- a/gradience/ui/presets_manager_window.py +++ b/gradience/frontend/views/presets_manager_window.py @@ -22,17 +22,18 @@ import json from collections import OrderedDict from pathlib import Path - from gi.repository import Gtk, Adw, GLib -from gradience.ui.preset_row import GradiencePresetRow -from gradience.ui.builtin_preset_row import GradienceBuiltinPresetRow -from gradience.ui.explore_preset_row import GradienceExplorePresetRow -from gradience.ui.repo_row import GradienceRepoRow -from gradience.utils.custom_presets import fetch_presets -from gradience.utils.preset import presets_dir -from gradience.utils.utils import buglog -from gradience.constants import rootdir +from gradience.backend.preset_downloader import fetch_presets +from gradience.backend.models.preset import presets_dir +from gradience.backend.utils.common import buglog +from gradience.backend.constants import rootdir + +from gradience.frontend.widgets.preset_row import GradiencePresetRow +from gradience.frontend.widgets.builtin_preset_row import GradienceBuiltinPresetRow +from gradience.frontend.widgets.explore_preset_row import GradienceExplorePresetRow +from gradience.frontend.widgets.repo_row import GradienceRepoRow + @Gtk.Template(resource_path=f"{rootdir}/ui/presets_manager_window.ui") class GradiencePresetWindow(Adw.Window): diff --git a/gradience/ui/share_window.py b/gradience/frontend/views/share_window.py similarity index 95% rename from gradience/ui/share_window.py rename to gradience/frontend/views/share_window.py index 3240bc24..5266d16d 100644 --- a/gradience/ui/share_window.py +++ b/gradience/frontend/views/share_window.py @@ -21,10 +21,10 @@ import time from gi.repository import Gtk, Adw, Gio -from gradience.utils.run_async import RunAsync -from gradience.utils.utils import buglog -from gradience.utils.flatpak_overrides import create_gtk_user_override -from gradience.constants import rootdir, app_id, rel_ver +from gradience.frontend.utils.run_async import RunAsync +from gradience.backend.utils.common import buglog +from gradience.backend.flatpak_overrides import create_gtk_user_override +from gradience.backend.constants import rootdir, app_id, rel_ver @Gtk.Template(resource_path=f"{rootdir}/ui/share_window.ui") diff --git a/gradience/ui/welcome_window.py b/gradience/frontend/views/welcome_window.py similarity index 96% rename from gradience/ui/welcome_window.py rename to gradience/frontend/views/welcome_window.py index 4ca55770..f904ca58 100644 --- a/gradience/ui/welcome_window.py +++ b/gradience/frontend/views/welcome_window.py @@ -21,10 +21,10 @@ import time from gi.repository import Gtk, Adw, Gio -from gradience.utils.run_async import RunAsync -from gradience.utils.utils import buglog -from gradience.utils.flatpak_overrides import create_gtk_user_override -from gradience.constants import rootdir, app_id, rel_ver +from gradience.frontend.utils.run_async import RunAsync +from gradience.backend.utils.common import buglog +from gradience.backend.flatpak_overrides import create_gtk_user_override +from gradience.backend.constants import rootdir, app_id, rel_ver @Gtk.Template(resource_path=f"{rootdir}/ui/welcome_window.ui") diff --git a/gradience/frontend/widgets/__init__.py b/gradience/frontend/widgets/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/gradience/ui/builtin_preset_row.py b/gradience/frontend/widgets/builtin_preset_row.py similarity index 93% rename from gradience/ui/builtin_preset_row.py rename to gradience/frontend/widgets/builtin_preset_row.py index c433c2b8..2f2d3a81 100644 --- a/gradience/ui/builtin_preset_row.py +++ b/gradience/frontend/widgets/builtin_preset_row.py @@ -18,8 +18,8 @@ from gi.repository import Gtk, Adw -from gradience.utils.utils import to_slug_case, buglog -from gradience.constants import rootdir +from gradience.backend.utils.common import to_slug_case, buglog +from gradience.backend.constants import rootdir @Gtk.Template(resource_path=f"{rootdir}/ui/builtin_preset_row.ui") diff --git a/gradience/ui/custom_css_group.py b/gradience/frontend/widgets/custom_css_group.py similarity index 95% rename from gradience/ui/custom_css_group.py rename to gradience/frontend/widgets/custom_css_group.py index 4da23800..67fca605 100644 --- a/gradience/ui/custom_css_group.py +++ b/gradience/frontend/widgets/custom_css_group.py @@ -18,8 +18,8 @@ from gi.repository import Gtk, Adw -from gradience.utils.utils import buglog -from gradience.constants import rootdir +from gradience.backend.utils.common import buglog +from gradience.backend.constants import rootdir @Gtk.Template(resource_path=f"{rootdir}/ui/custom_css_group.ui") diff --git a/gradience/ui/error_list_row.py b/gradience/frontend/widgets/error_list_row.py similarity index 96% rename from gradience/ui/error_list_row.py rename to gradience/frontend/widgets/error_list_row.py index e0065f2c..18132bc0 100644 --- a/gradience/ui/error_list_row.py +++ b/gradience/frontend/widgets/error_list_row.py @@ -18,7 +18,7 @@ from gi.repository import Gtk -from gradience.constants import rootdir +from gradience.backend.constants import rootdir @Gtk.Template(resource_path=f"{rootdir}/ui/error_list_row.ui") diff --git a/gradience/ui/explore_preset_row.py b/gradience/frontend/widgets/explore_preset_row.py similarity index 94% rename from gradience/ui/explore_preset_row.py rename to gradience/frontend/widgets/explore_preset_row.py index 67f1376c..fe94643b 100644 --- a/gradience/ui/explore_preset_row.py +++ b/gradience/frontend/widgets/explore_preset_row.py @@ -20,9 +20,9 @@ import os from gi.repository import Gtk, Adw -from gradience.utils.utils import to_slug_case, buglog -from gradience.utils.custom_presets import download_preset -from gradience.constants import rootdir +from gradience.backend.utils.common import to_slug_case, buglog +from gradience.backend.preset_downloader import download_preset +from gradience.backend.constants import rootdir @Gtk.Template(resource_path=f"{rootdir}/ui/explore_preset_row.ui") diff --git a/gradience/frontend/widgets/meson.build b/gradience/frontend/widgets/meson.build new file mode 100644 index 00000000..e9604d40 --- /dev/null +++ b/gradience/frontend/widgets/meson.build @@ -0,0 +1,15 @@ +widgetsdir = 'gradience/frontend/widgets' + +gradience_sources = [ + '__init__.py', + 'builtin_preset_row.py', + 'custom_css_group.py', + 'error_list_row.py', + 'explore_preset_row.py', + 'option_row.py', + 'palette_shades.py', + 'plugin_row.py', + 'preset_row.py', + 'repo_row.py' +] +PY_INSTALLDIR.install_sources(gradience_sources, subdir: widgetsdir) diff --git a/gradience/ui/option_row.py b/gradience/frontend/widgets/option_row.py similarity index 98% rename from gradience/ui/option_row.py rename to gradience/frontend/widgets/option_row.py index 6a49e20c..8c173b6d 100644 --- a/gradience/ui/option_row.py +++ b/gradience/frontend/widgets/option_row.py @@ -18,7 +18,7 @@ from gi.repository import Gtk, Gdk, Adw -from gradience.constants import rootdir +from gradience.backend.constants import rootdir @Gtk.Template(resource_path=f"{rootdir}/ui/option_row.ui") diff --git a/gradience/ui/palette_shades.py b/gradience/frontend/widgets/palette_shades.py similarity index 98% rename from gradience/ui/palette_shades.py rename to gradience/frontend/widgets/palette_shades.py index ab4087e1..622a3fc4 100644 --- a/gradience/ui/palette_shades.py +++ b/gradience/frontend/widgets/palette_shades.py @@ -18,7 +18,7 @@ from gi.repository import Gtk, Gdk, Adw -from gradience.constants import rootdir +from gradience.backend.constants import rootdir @Gtk.Template(resource_path=f"{rootdir}/ui/palette_shades.ui") diff --git a/gradience/ui/plugin_row.py b/gradience/frontend/widgets/plugin_row.py similarity index 94% rename from gradience/ui/plugin_row.py rename to gradience/frontend/widgets/plugin_row.py index 4e00c260..9d615653 100644 --- a/gradience/ui/plugin_row.py +++ b/gradience/frontend/widgets/plugin_row.py @@ -21,10 +21,9 @@ import os from pathlib import Path from gi.repository import Gtk, Adw -from gradience.ui.no_plugin_window import GradienceNoPluginPrefWindow -from gradience.utils.utils import buglog -from gradience.constants import rootdir - +from gradience.frontend.dialogs.no_plugin_window import GradienceNoPluginPrefWindow +from gradience.backend.utils.common import buglog +from gradience.backend.constants import rootdir USER_PLUGIN_DIR = Path( diff --git a/gradience/ui/preset_row.py b/gradience/frontend/widgets/preset_row.py similarity index 96% rename from gradience/ui/preset_row.py rename to gradience/frontend/widgets/preset_row.py index a57ae75d..18c36576 100644 --- a/gradience/ui/preset_row.py +++ b/gradience/frontend/widgets/preset_row.py @@ -20,10 +20,10 @@ import os from gi.repository import Gtk, Adw, Xdp, XdpGtk4 -from gradience.ui.share_window import GradienceShareWindow -from gradience.utils.utils import to_slug_case, buglog -from gradience.utils.preset import Preset, presets_dir -from gradience.constants import rootdir +from gradience.frontend.views.share_window import GradienceShareWindow +from gradience.backend.utils.common import to_slug_case, buglog +from gradience.backend.models.preset import Preset, presets_dir +from gradience.backend.constants import rootdir @Gtk.Template(resource_path=f"{rootdir}/ui/preset_row.ui") diff --git a/gradience/ui/repo_row.py b/gradience/frontend/widgets/repo_row.py similarity index 94% rename from gradience/ui/repo_row.py rename to gradience/frontend/widgets/repo_row.py index 3106ccfe..b2a6d138 100644 --- a/gradience/ui/repo_row.py +++ b/gradience/frontend/widgets/repo_row.py @@ -20,8 +20,8 @@ import os from gi.repository import Gtk, Adw -from gradience.constants import rootdir -from gradience.utils.utils import to_slug_case +from gradience.backend.constants import rootdir +from gradience.backend.utils.common import to_slug_case @Gtk.Template(resource_path=f"{rootdir}/ui/repo_row.ui") diff --git a/gradience/meson.build b/gradience/meson.build index 6f1293c4..2fdddca6 100644 --- a/gradience/meson.build +++ b/gradience/meson.build @@ -1,80 +1,15 @@ -configure_file( - input: 'gradience.in', - output: 'gradience', - configuration: conf, - install_dir: get_option('bindir') -) +moduledir = 'gradience' -configure_file( - input: 'gradience.in', - output: 'local-gradience', - configuration: local_conf -) +subdir('backend') +subdir('frontend') -configure_file( - input: 'constants.py.in', - output: 'constants.py', - configuration: configuration_data({ - 'APP_ID': APPLICATION_ID, - 'RELEASE_VER': meson.project_version(), - 'VERSION': meson.project_version() + VERSION_SUFFIX, - 'BUILD_TYPE': get_option('buildtype'), - 'PROJECT_URL': PROJECT_URL, - 'BUGTRACKER_URL': BUGTRACKER_URL, - 'HELP_URL': HELP_URL, - 'TRANSLATE_URL': TRANSLATE_URL, - 'PKGDATA_DIR': PKGDATA_DIR, - 'LOCALE_DIR': conf.get('LOCALE_DIR'), - }), - install: true, - install_dir: PY_INSTALLDIR.get_install_dir() / 'gradience', -) - -launcher = join_paths(meson.project_build_root(), 'gradience', 'local-' + meson.project_name()) +launcher = join_paths(meson.project_build_root(), moduledir, 'frontend', 'local-' + meson.project_name()) run_target('run', command: [launcher] ) -# Install sources gradience_sources = [ - '__init__.py', - 'settings_schema.py', - 'main.py', - 'plugins_list.py', + '__init__.py' ] -PY_INSTALLDIR.install_sources(gradience_sources, subdir: 'gradience') - -# Install utility modules -gradience_utils = [ - 'utils/__init__.py', - 'utils/custom_presets.py', - 'utils/flatpak_overrides.py', - 'utils/utils.py', - 'utils/run_async.py', - 'utils/css.py', - 'utils/preset.py', - 'utils/repo.py', -] -PY_INSTALLDIR.install_sources(gradience_utils, subdir: 'gradience/utils') - -# Install ui Python modules -gradience_ui_modules = [ - 'ui/error_list_row.py', - 'ui/palette_shades.py', - 'ui/option_row.py', - 'ui/window.py', - 'ui/app_type_dialog.py', - 'ui/custom_css_group.py', - 'ui/presets_manager_window.py', - 'ui/preferences_window.py', - 'ui/plugin_row.py', - 'ui/explore_preset_row.py', - 'ui/builtin_preset_row.py', - 'ui/preset_row.py', - 'ui/welcome_window.py', - 'ui/repo_row.py', - 'ui/no_plugin_window.py', - 'ui/share_window.py', -] -PY_INSTALLDIR.install_sources(gradience_ui_modules, subdir: 'gradience/ui') +PY_INSTALLDIR.install_sources(gradience_sources, subdir: moduledir) diff --git a/gradience/ui/__init__.py b/gradience/ui/__init__.py deleted file mode 100644 index d755531e..00000000 --- a/gradience/ui/__init__.py +++ /dev/null @@ -1,17 +0,0 @@ -# __init__.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 . diff --git a/gradience/utils/__init__.py b/gradience/utils/__init__.py deleted file mode 100644 index d755531e..00000000 --- a/gradience/utils/__init__.py +++ /dev/null @@ -1,17 +0,0 @@ -# __init__.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 . diff --git a/po/POTFILES b/po/POTFILES index c5ca7cf5..c93ddaad 100644 --- a/po/POTFILES +++ b/po/POTFILES @@ -14,27 +14,25 @@ data/ui/presets_manager_window.blp data/ui/share_window.blp data/ui/welcome_window.blp data/ui/window.blp -gradience/utils/css.py -gradience/utils/custom_presets.py -gradience/utils/flatpak_overrides.py -gradience/utils/preset.py -gradience/utils/repo.py -gradience/utils/run_async.py -gradience/utils/utils.py -gradience/ui/app_type_dialog.py -gradience/ui/builtin_preset_row.py -gradience/ui/custom_css_group.py -gradience/ui/error_list_row.py -gradience/ui/explore_preset_row.py -gradience/ui/option_row.py -gradience/ui/palette_shades.py -gradience/ui/plugin_row.py -gradience/ui/preferences_window.py -gradience/ui/preset_row.py -gradience/ui/presets_manager_window.py -gradience/ui/repo_row.py -gradience/ui/welcome_window.py -gradience/ui/window.py -gradience/main.py -gradience/plugins_list.py -gradience/settings_schema.py +gradience/backend/preset_downloader.py +gradience/backend/flatpak_overrides.py +gradience/backend/models/preset.py +gradience/backend/models/repo.py +gradience/frontend/dialogs/app_type_dialog.py +gradience/frontend/dialogs/no_plugin_window.py +gradience/frontend/widgets/builtin_preset_row.py +gradience/frontend/widgets/custom_css_group.py +gradience/frontend/widgets/error_list_row.py +gradience/frontend/widgets/explore_preset_row.py +gradience/frontend/widgets/option_row.py +gradience/frontend/widgets/palette_shades.py +gradience/frontend/widgets/plugin_row.py +gradience/frontend/views/preferences_window.py +gradience/frontend/widgets/preset_row.py +gradience/frontend/views/presets_manager_window.py +gradience/frontend/widgets/repo_row.py +gradience/frontend/views/welcome_window.py +gradience/frontend/views/main_window.py +gradience/frontend/main.py +gradience/frontend/views/plugins_list.py +gradience/frontend/settings_schema.py