qcanvas 2.0.2__tar.gz → 2.0.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of qcanvas might be problematic. Click here for more details.

Files changed (91) hide show
  1. {qcanvas-2.0.2 → qcanvas-2.0.4}/PKG-INFO +13 -15
  2. {qcanvas-2.0.2 → qcanvas-2.0.4}/README.md +9 -11
  3. {qcanvas-2.0.2 → qcanvas-2.0.4}/pyproject.toml +5 -5
  4. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/qml_components/__init__.py +1 -0
  5. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/qml_components/attachments_pane.py +2 -4
  6. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/qml_components/comments_pane.py +2 -4
  7. qcanvas-2.0.4/qcanvas/ui/qml_components/qml/__init__.py +3 -0
  8. qcanvas-2.0.4/qcanvas/ui/qml_components/qml/rc_qml.py +709 -0
  9. qcanvas-2.0.4/qcanvas/ui/qml_components/qml/rc_qml.qrc +16 -0
  10. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/qml_components/qml_pane.py +3 -4
  11. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/__init__.py +0 -0
  12. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/app.py +0 -0
  13. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/backend_connectors/__init__.py +0 -0
  14. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/backend_connectors/frontend_resource_manager.py +0 -0
  15. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/backend_connectors/qcanvas_task_master.py +0 -0
  16. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/icons/__init__.py +0 -0
  17. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/icons/_icon_type.py +0 -0
  18. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/icons/icons.qrc +0 -0
  19. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/icons/rc_icons.py +0 -0
  20. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/settings/__init__.py +0 -0
  21. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/settings/_client_settings.py +0 -0
  22. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/settings/_course_settings.py +0 -0
  23. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/settings/_mapped_setting.py +0 -0
  24. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/settings/_ui_settings.py +0 -0
  25. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/theme.py +0 -0
  26. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/__init__.py +0 -0
  27. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/__init__.py +0 -0
  28. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/content_tree.py +0 -0
  29. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/course_tree/__init__.py +0 -0
  30. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/course_tree/_course_icon_generator.py +0 -0
  31. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/course_tree/course_tree.py +0 -0
  32. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/course_viewer.py +0 -0
  33. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/tabs/__init__.py +0 -0
  34. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/tabs/assignment_tab/__init__.py +0 -0
  35. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tab.py +0 -0
  36. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tree.py +0 -0
  37. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/tabs/constants.py +0 -0
  38. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/tabs/content_tab.py +0 -0
  39. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/tabs/file_tab/__init__.py +0 -0
  40. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/tabs/file_tab/file_tab.py +0 -0
  41. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/tabs/file_tab/file_tree.py +0 -0
  42. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/tabs/file_tab/pages_file_tree.py +0 -0
  43. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/tabs/mail_tab/__init__.py +0 -0
  44. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/tabs/mail_tab/mail_tab.py +0 -0
  45. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/tabs/mail_tab/mail_tree.py +0 -0
  46. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/tabs/page_tab/__init__.py +0 -0
  47. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/tabs/page_tab/page_tab.py +0 -0
  48. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/tabs/page_tab/page_tree.py +0 -0
  49. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/tabs/resource_rich_browser.py +0 -0
  50. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/course_viewer/tree_widget_data_item.py +0 -0
  51. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/memory_tree/__init__.py +0 -0
  52. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/memory_tree/_tree_memory.py +0 -0
  53. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/memory_tree/memory_tree_widget.py +0 -0
  54. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/memory_tree/memory_tree_widget_item.py +0 -0
  55. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/qcanvas_window/__init__.py +0 -0
  56. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/qcanvas_window/course_viewer_container.py +0 -0
  57. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/qcanvas_window/options/__init__.py +0 -0
  58. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/qcanvas_window/options/auto_download_resources_option.py +0 -0
  59. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/qcanvas_window/options/quick_sync_option.py +0 -0
  60. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/qcanvas_window/options/sync_on_start_option.py +0 -0
  61. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/qcanvas_window/options/theme_selection_menu.py +0 -0
  62. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/qcanvas_window/qcanvas_window.py +0 -0
  63. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/qcanvas_window/status_bar_progress_display.py +0 -0
  64. {qcanvas-2.0.2/qcanvas/ui/qml_components → qcanvas-2.0.4/qcanvas/ui/qml_components/qml}/AttachmentsList.ui.qml +0 -0
  65. {qcanvas-2.0.2/qcanvas/ui/qml_components → qcanvas-2.0.4/qcanvas/ui/qml_components/qml}/AttachmentsListDelegate.qml +0 -0
  66. {qcanvas-2.0.2/qcanvas/ui/qml_components → qcanvas-2.0.4/qcanvas/ui/qml_components/qml}/AttachmentsListModel.qml +0 -0
  67. {qcanvas-2.0.2/qcanvas/ui/qml_components → qcanvas-2.0.4/qcanvas/ui/qml_components/qml}/AttachmentsPane.qml +0 -0
  68. {qcanvas-2.0.2/qcanvas/ui/qml_components → qcanvas-2.0.4/qcanvas/ui/qml_components/qml}/CommentsList.ui.qml +0 -0
  69. {qcanvas-2.0.2/qcanvas/ui/qml_components → qcanvas-2.0.4/qcanvas/ui/qml_components/qml}/CommentsListDelegate.ui.qml +0 -0
  70. {qcanvas-2.0.2/qcanvas/ui/qml_components → qcanvas-2.0.4/qcanvas/ui/qml_components/qml}/CommentsListModel.qml +0 -0
  71. {qcanvas-2.0.2/qcanvas/ui/qml_components → qcanvas-2.0.4/qcanvas/ui/qml_components/qml}/CommentsPane.qml +0 -0
  72. {qcanvas-2.0.2/qcanvas/ui/qml_components → qcanvas-2.0.4/qcanvas/ui/qml_components/qml}/DecoratedText.ui.qml +0 -0
  73. {qcanvas-2.0.2/qcanvas/ui/qml_components → qcanvas-2.0.4/qcanvas/ui/qml_components/qml}/Spacer.ui.qml +0 -0
  74. {qcanvas-2.0.2/qcanvas/ui/qml_components → qcanvas-2.0.4/qcanvas/ui/qml_components/qml}/ThemedRectangle.qml +0 -0
  75. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/qml_components/qml_bridge_types.py +0 -0
  76. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/setup/__init__.py +0 -0
  77. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/setup/setup_checker.py +0 -0
  78. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/ui/setup/setup_dialog.py +0 -0
  79. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/util/__init__.py +0 -0
  80. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/util/auto_downloader.py +0 -0
  81. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/util/basic_fonts.py +0 -0
  82. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/util/context_dict.py +0 -0
  83. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/util/file_icons.py +0 -0
  84. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/util/html_cleaner.py +0 -0
  85. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/util/layouts.py +0 -0
  86. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/util/logs.py +0 -0
  87. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/util/paths.py +0 -0
  88. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/util/qurl_util.py +0 -0
  89. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/util/runtime.py +0 -0
  90. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/util/ui_tools.py +0 -0
  91. {qcanvas-2.0.2 → qcanvas-2.0.4}/qcanvas/util/url_checker.py +0 -0
@@ -1,17 +1,17 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: qcanvas
3
- Version: 2.0.2
4
- Summary: QCanvas is a desktop client for Canvas LMS.
3
+ Version: 2.0.4
4
+ Summary: View courses from Canvas LMS
5
5
  Author: QCanvas
6
6
  Author-email: QCanvas@noreply.codeberg.org
7
7
  Requires-Python: >=3.12,<3.13
8
8
  Classifier: Programming Language :: Python :: 3
9
9
  Classifier: Programming Language :: Python :: 3.12
10
10
  Requires-Dist: aiofile (>=3.9.0,<4.0.0)
11
- Requires-Dist: aiosqlite (>=0.20.0,<0.21.0)
11
+ Requires-Dist: aiosqlite (>=0.21.0,<0.22.0)
12
12
  Requires-Dist: asynctaskpool (>=0.2.1,<0.3.0)
13
13
  Requires-Dist: cachetools (>=5.5.0,<6.0.0)
14
- Requires-Dist: libqcanvas (>=0.5.4,<0.6.0)
14
+ Requires-Dist: libqcanvas (>=0.5.5,<0.6.0)
15
15
  Requires-Dist: platformdirs (>=4.2.2,<5.0.0)
16
16
  Requires-Dist: pyqtdarktheme-fork (>=2.3.2,<3.0.0)
17
17
  Requires-Dist: qasync (>=0.27.1,<0.28.0)
@@ -35,14 +35,13 @@ https://github.com/QCanvas/QCanvasApp
35
35
 
36
36
  You can download a **windows** version from [releases](https://github.com/QCanvas/QCanvasApp/releases)
37
37
 
38
- > [!WARNING]
39
- > The appimage version is *not recommended* as it is not a proper portable appimage. It will only work on debian/ubuntu based distros.
38
+ An appimage version is also available from releases but is not recommended.
40
39
 
41
40
  # Development/Run from source
42
41
 
43
42
  ## Prerequisites
44
43
 
45
- - Python 3.12+ (use [pyenv](https://github.com/pyenv/pyenv) if your distro does not have that version)
44
+ - Python 3.12
46
45
  - Poetry
47
46
 
48
47
  ## Get started
@@ -51,24 +50,23 @@ You can download a **windows** version from [releases](https://github.com/QCanva
51
50
  git clone https://github.com/QCanvas/QCanvasApp.git
52
51
  cd QCanvasApp
53
52
 
54
- # Enter shell and run it
55
- poetry shell
56
- poetry install
57
- python -m qcanvas
53
+ # Install packages and stuff
54
+ poetry install --with flatpak-exclude
58
55
 
59
- # Alternatively you can run it like this:
60
- poetry install
56
+ # Run QCanvas (If you run `poetry shell`, you can drop the `poetry run` part)
57
+ poetry run qcanvas
58
+ # Alternative
61
59
  poetry run python -m qcanvas
62
60
  ```
63
61
 
64
62
  ## Build custom AppImage
65
63
 
66
64
  > [!WARNING]
67
- > This is not recommended as the appimage produced by this process isn't a proper appimage.
65
+ > This is not recommended as the appimage produced by this process isn't a proper appimage. It's just a pyinstaller build bundled as an appimage.
68
66
 
69
67
  > [!IMPORTANT]
70
68
  > You will need [Appimagetool](https://github.com/AppImage/appimagetool)
71
69
 
72
70
  ```bash
73
- bash ./dev_scripts/build_appimage.sh
71
+ bash ./dev_scripts/build_appimage
74
72
  ```
@@ -14,14 +14,13 @@ https://github.com/QCanvas/QCanvasApp
14
14
 
15
15
  You can download a **windows** version from [releases](https://github.com/QCanvas/QCanvasApp/releases)
16
16
 
17
- > [!WARNING]
18
- > The appimage version is *not recommended* as it is not a proper portable appimage. It will only work on debian/ubuntu based distros.
17
+ An appimage version is also available from releases but is not recommended.
19
18
 
20
19
  # Development/Run from source
21
20
 
22
21
  ## Prerequisites
23
22
 
24
- - Python 3.12+ (use [pyenv](https://github.com/pyenv/pyenv) if your distro does not have that version)
23
+ - Python 3.12
25
24
  - Poetry
26
25
 
27
26
  ## Get started
@@ -30,24 +29,23 @@ You can download a **windows** version from [releases](https://github.com/QCanva
30
29
  git clone https://github.com/QCanvas/QCanvasApp.git
31
30
  cd QCanvasApp
32
31
 
33
- # Enter shell and run it
34
- poetry shell
35
- poetry install
36
- python -m qcanvas
32
+ # Install packages and stuff
33
+ poetry install --with flatpak-exclude
37
34
 
38
- # Alternatively you can run it like this:
39
- poetry install
35
+ # Run QCanvas (If you run `poetry shell`, you can drop the `poetry run` part)
36
+ poetry run qcanvas
37
+ # Alternative
40
38
  poetry run python -m qcanvas
41
39
  ```
42
40
 
43
41
  ## Build custom AppImage
44
42
 
45
43
  > [!WARNING]
46
- > This is not recommended as the appimage produced by this process isn't a proper appimage.
44
+ > This is not recommended as the appimage produced by this process isn't a proper appimage. It's just a pyinstaller build bundled as an appimage.
47
45
 
48
46
  > [!IMPORTANT]
49
47
  > You will need [Appimagetool](https://github.com/AppImage/appimagetool)
50
48
 
51
49
  ```bash
52
- bash ./dev_scripts/build_appimage.sh
50
+ bash ./dev_scripts/build_appimage
53
51
  ```
@@ -1,7 +1,7 @@
1
1
  [tool.poetry]
2
2
  name = "qcanvas"
3
- version = "2.0.2"
4
- description = "QCanvas is a desktop client for Canvas LMS."
3
+ version = "2.0.4"
4
+ description = "View courses from Canvas LMS"
5
5
  authors = ["QCanvas <QCanvas@noreply.codeberg.org>"]
6
6
  readme = "README.md"
7
7
  exclude = [
@@ -16,12 +16,12 @@ qcanvas = "qcanvas:main"
16
16
 
17
17
  [tool.poetry.dependencies]
18
18
  python = ">=3.12,<3.13"
19
- libqcanvas = "^0.5.4"
19
+ libqcanvas = "^0.5.5"
20
20
  #libqcanvas = { path = "../libqcanvas/", develop = true }
21
21
  #libqcanvas-clients = { path = "../libqcanvas_clients/", develop = true }
22
22
  asynctaskpool = "^0.2.1"
23
23
  sqlalchemy = "^2.0.31"
24
- aiosqlite = "^0.20.0"
24
+ aiosqlite = "^0.21.0"
25
25
  pyqtdarktheme-fork = "^2.3.2"
26
26
  qasync = "^0.27.1"
27
27
  platformdirs = "^4.2.2"
@@ -44,7 +44,7 @@ rich = "^13.7.1"
44
44
  pre-commit = "^4.0.1"
45
45
  xmltodict = "^0.13.0"
46
46
  mako = "^1.3.8"
47
- invoke = "^2.2.0"
47
+ xonsh = "^0.19.1"
48
48
 
49
49
  [build-system]
50
50
  requires = ["poetry-core"]
@@ -1,3 +1,4 @@
1
+ from .qml import rc_qml # Do not remove!! Loads the qml resources
1
2
  from .comments_pane import CommentsPane
2
3
  from .attachments_pane import AttachmentsPane
3
4
  from .qml_bridge_types import Attachment, Comment
@@ -1,6 +1,4 @@
1
- from pathlib import Path
2
-
3
- from PySide6.QtCore import Slot
1
+ from PySide6.QtCore import Slot, QUrl
4
2
  from PySide6.QtWidgets import QWidget
5
3
  from qasync import asyncSlot
6
4
 
@@ -17,7 +15,7 @@ class AttachmentsPane(QmlPane):
17
15
  def __init__(
18
16
  self, downloader: FrontendResourceManager, parent: QWidget | None = None
19
17
  ):
20
- super().__init__(Path(__file__).parent / "AttachmentsPane.qml", parent)
18
+ super().__init__(qml_path=QUrl("qrc:qml/AttachmentsPane.qml"), parent=parent)
21
19
 
22
20
  self._original_dock_name = None
23
21
  self._downloader = downloader
@@ -1,6 +1,4 @@
1
- from pathlib import Path
2
-
3
- from PySide6.QtCore import Signal, Slot
1
+ from PySide6.QtCore import Signal, Slot, QUrl
4
2
  from PySide6.QtWidgets import QWidget
5
3
  from libqcanvas.util import remove_unwanted_whitespaces, as_local
6
4
  from qasync import asyncSlot
@@ -20,7 +18,7 @@ class CommentsPane(QmlPane):
20
18
  def __init__(
21
19
  self, downloader: FrontendResourceManager, parent: QWidget | None = None
22
20
  ):
23
- super().__init__(Path(__file__).parent / "CommentsPane.qml", parent)
21
+ super().__init__(qml_path=QUrl("qrc:qml/CommentsPane.qml"), parent=parent)
24
22
  self._downloader = downloader
25
23
  self._attachments: dict[str, db.Resource] = {}
26
24
  self._qattachments: dict[str, Attachment] = {}
@@ -0,0 +1,3 @@
1
+ import logging
2
+
3
+ _logger = logging.getLogger(__name__)
@@ -0,0 +1,709 @@
1
+ # Resource object code (Python 3)
2
+ # Created by: object code
3
+ # Created by: The Resource Compiler for Qt version 6.8.1
4
+ # WARNING! All changes made in this file will be lost!
5
+
6
+ from PySide6 import QtCore
7
+
8
+ qt_resource_data = b"\
9
+ \x00\x00\x03O\
10
+ (\
11
+ \xb5/\xfd`d\x0b-\x1a\x00\x16gm# q\xdb\
12
+ \xccq\xe1\xe6\xd2\xb7\xd0\xfa\x906\x94\xdc\x14\xf9\x1c\xdb\
13
+ D{\x809,S\x9e\x83P\x05\xa0\x01\xc0\x0d8\x0f\
14
+ b\x00d\x00a\x00\xfe\xfeq\xba\x11D\x8cit\xda\
15
+ \x9e\x89\x1e\xe5D\x92\xc9\xe1!\x22'\x9e\xcf\xb0\xd1\x84\
16
+ \x0cc\xae\xd3dK\xbf>e\x8b7#\xf6\xab\xdfC\
17
+ \xe8\x10\x14\xa1\x84I\x11s\x9e\xde\x1b\x7f\x22\x9d\xd3\x90\
18
+ #\xf9\x11\xe9:\x97\xbf\x97\x93\x9b\xf4\xcf\xe5u\xfc.\
19
+ _\x9f\xcf\x00\xd6*\xa9c\x02Hf=IIEj\
20
+ \xc2~(\x18\x01\x07\xc3\x04\xbe\x989N\x7f\xb1D\xaa\
21
+ u\xd1\x9fCY\xda\xfc\xdf\x9bT\xcf\xd0I \x7f\x85\
22
+ \x83T\x8e\xeb]\x8523\x99\x8dd\x18\xc8\x1c\x92\x22\
23
+ Z3\x0e\x01&\xc1t\x9e\x90\xb5~\xb2\xf6O\x82\xed\
24
+ \xf9\xa4\xa0c\x01eu\xac\x148\x9e\xbf\xf2[_q\
25
+ x\xa7\xaf\xa4\xe5\xebp(\x08\xfd?\xf9\xd1\x93\xb2\xf8\
26
+ \x810)j\xde\xbb\xe3\xf5\x95\xbc\xe2\x06\x0d\xc2A*\
27
+ \xd6\xe8\x89w\xed\x90\xf3\xc9'}\x8d0^o\xa9~\
28
+ \xfb3\x98\xe2\xf9\xf3Q\xb7!\x0a\xbav\x9e\xb6w\xfc\
29
+ \x14r-n\xa7J\x8d_\xf2\x18\xdc\x96T?a\x06\
30
+ \x9f?\xcb)B\x0a\xe4@&~u\x98\xf1\xa6\xe2\x87\
31
+ \xe3\xfbTP\xb3u\xa1<\xdd\xf4x\x9f7\x09\xa9`\
32
+ \xec\xd5\xc7\xb6[\xe2\x7ff\x0a\xa5z\xce\x02\xcc\x85!\
33
+ \xd3I*\xb6\xf4/\xe5\x06\xd8\x0e\x8f\x5c\xc8\xe7\x1d\xc7\
34
+ ,\xc1g\xe9?\xb3\xa6a\xf3\xe3\x07#r\x8f\x07\x11\
35
+ =]\x17\x9da\x9f_\xfc\xe3\x82\xd7\x1f }\x18\x08\
36
+ \xa9\x9e\xdf\xbe`\xd7,Zo\x96_\x9f/\x8e\x18\xc0\
37
+ \xc7K\xa1\x89\x07\xc8%\xde\xb9F?\x86X\xa4rN\
38
+ \xb3\x07\xd3\xd5\xff\xd8\xb2\xfc\x1ay\xc7\xad\xf9\xba\x5c\x96\
39
+ y\x80\xab\xa0\x01\x1a33$2\x93\x14\xa5\xb0\x1c \
40
+ \x84\x18\xc4\x10V\x07\xa9\xd1^C\xdd\x1dfi\x00\x82\
41
+ \x17\xc5\x10\x8b\xaeWv\xbd\xa2\x90\xb7\xfc?\x96\x99V\
42
+ \x8b\xf4\xf2{\xc1.\x8f>\xf5\x1b\xd8\x1c\x87\xe8\x12\xab\
43
+ \xd1\xca\x19\xbd+!'\x7fz\x09\x08\xa95\xdbgM\
44
+ \xb1\xd4\xben\xb8\xfb\xc8tbv\xa6\x9f\x7f\xb4\xde\x01\
45
+ bP\xb2\x030\x89D\x13\x86\xfd\xe8r\xd9\x94-\xd4\
46
+ \x95\x06\xb7\x84;,<\xd5f\xfd\xe7\x01o-\xc7~\
47
+ [Q\x9a2\xf6\x17<\x83$_B\x83\xb8v\xd4\x22\
48
+ \xb4\xafz\xd6\x1c\x0c\x10\xff'4pro\xd5\xbe\xad\
49
+ \xac\xce\x08\x868\xfd l\x1aU\xabM\xa9\xe6h\xd6\
50
+ -\xc8!\x99\xfa\xca\x05h\xd7X?jY(\xb7\x0f\
51
+ o<\xae\xeb\xf8]\xf9ax@\xf3\xe7_qw\x8b\
52
+ \xe60\x16\xee\xfcy\xfb1\xdb\xf1\xa2\xe3\x96\xd2ud\
53
+ \x04\x95\xed\xd8\xb6\xd4}\xd9\xb9\xday:\xa1ETN\
54
+ \xd4m\x89\x9c\x16\x05c\x17x\xcb<\xf2\x1e\xbf\xb1[\
55
+ \x9c}\xd5e\xe5\xbd\xb6!\xf6\x0fmy7\xb7\xc2\xd2\
56
+ \x83\x18\x13#}g\xd7$\x05\xa0\xadxi\x96W-\
57
+ d'\xde\xa4\x00P\xc3\xfdt\xa5w@_\x1af\xb8\
58
+ i=\x11I\x83XF\x938Im\x99\x0a$\xa7n\
59
+ \xaa\xc2@\x01\x8b~\x88g%\xe5E\x16\xe4\x06\xf6F\
60
+ [j\x9e\x87\x5c\xcbt\x07\xb2\xfe\x83A \xcet\x93\
61
+ \xd1\xb3\xdc\x01\xbe.@a%S\xa6\xb9\x99}\x80G\
62
+ \xb0\xa5\xf9\x01M\x8d\x07\xbe\xa4\xfaY\xbe\x98\xb4\x10R\
63
+ \xc0\xe4\xe2\xfb)\x082\xaeJP\xeb\x0b\xb8>\
64
+ \x00\x00\x02\x04\
65
+ i\
66
+ mport QtQuick\x0a\x0aL\
67
+ istModel {\x0a L\
68
+ istElement {\x0a \
69
+ file_name: \
70
+ \x22texas.pdf\x22\x0a \
71
+ resource_id:\
72
+ \x221\x22\x0a dow\
73
+ nload_state: \x22NO\
74
+ T_DOWNLOADED\x22\x0a \
75
+ }\x0a ListElem\
76
+ ent {\x0a fi\
77
+ le_name: \x22oh_no_\
78
+ what_a_terribly_\
79
+ long_file_name_i\
80
+ ts_not_like_some\
81
+ one_would_actual\
82
+ ly_do_this.pdf\x22\x0a\
83
+ resource\
84
+ _id: \x222\x22\x0a \
85
+ download_state:\
86
+ \x22FAILED\x22\x0a }\x0a\
87
+ ListElement \
88
+ {\x0a file_n\
89
+ ame: \x22i was tran\
90
+ sported to anoth\
91
+ er world where j\
92
+ avascript doesn'\
93
+ t exist.cbz\x22\x0a \
94
+ resource_id\
95
+ : \x223\x22\x0a do\
96
+ wnload_state: \x22D\
97
+ OWNLOADED\x22\x0a }\
98
+ \x0a}\x0a\
99
+ \x00\x00\x00\xa3\
100
+ i\
101
+ mport QtQuick\x0a\x0aT\
102
+ hemedRectangle {\
103
+ \x0a anchors.fil\
104
+ l: parent\x0a\x0a C\
105
+ ommentsList {\x0a \
106
+ anchors.fi\
107
+ ll: parent\x0a \
108
+ model: commen\
109
+ ts\x0a palet\
110
+ te: theme\x0a }\x0a\
111
+ }\x0a\
112
+ \x00\x00\x03\xf9\
113
+ i\
114
+ mport QtQuick\x0a\x0aR\
115
+ ectangle {\x0a p\
116
+ roperty Palette \
117
+ theme: getTheme(\
118
+ )\x0a color: the\
119
+ me.base\x0a\x0a fun\
120
+ ction getTheme()\
121
+ {\x0a if (a\
122
+ ppTheme.theme ==\
123
+ = \x22native\x22)\x0a \
124
+ return p\
125
+ alette\x0a e\
126
+ lse if (appTheme\
127
+ .dark_mode === t\
128
+ rue)\x0a \
129
+ return darkThem\
130
+ e\x0a else\x0a \
131
+ retur\
132
+ n lightTheme\x0a \
133
+ }\x0a\x0a Palette \
134
+ {\x0a id: li\
135
+ ghtTheme\x0a \
136
+ base: \x22#f8f9fa\x22\
137
+ \x0a window:\
138
+ \x22#f8f9fa\x22\x0a \
139
+ midlight: \x22#f\
140
+ 8f9fa\x22\x0a a\
141
+ ccent: \x22#e02424\x22\
142
+ \x0a link: a\
143
+ ccent\x0a da\
144
+ rk: \x22#dadce0\x22\x0a \
145
+ text: \x22#4d\
146
+ 5157\x22\x0a }\x0a\x0a \
147
+ Palette {\x0a \
148
+ id: darkTheme\
149
+ \x0a base: \x22\
150
+ #202124\x22\x0a \
151
+ window: \x22#f8f9f\
152
+ a\x22\x0a midli\
153
+ ght: \x22#202124\x22\x0a \
154
+ accent: \x22\
155
+ #e02424\x22\x0a \
156
+ link: accent\x0a \
157
+ dark: \x22#3f\
158
+ 4042\x22\x0a te\
159
+ xt: \x22#e4e7eb\x22\x0a \
160
+ }\x0a\x0a Connect\
161
+ ions {\x0a t\
162
+ arget: appTheme\x0a\
163
+ \x0a functio\
164
+ n onThemeChanged\
165
+ () {\x0a \
166
+ updateTheme()\x0a \
167
+ }\x0a\x0a \
168
+ function onDar\
169
+ kModeChanged() {\
170
+ \x0a upd\
171
+ ateTheme()\x0a \
172
+ }\x0a\x0a fu\
173
+ nction updateThe\
174
+ me() {\x0a \
175
+ theme = getTh\
176
+ eme()\x0a }\x0a\
177
+ }\x0a}\x0a\
178
+ \x00\x00\x00\xae\
179
+ i\
180
+ mport QtQuick\x0a\x0aT\
181
+ hemedRectangle {\
182
+ \x0a anchors.fil\
183
+ l: parent\x0a\x0a A\
184
+ ttachmentsList {\
185
+ \x0a anchors\
186
+ .fill: parent\x0a \
187
+ model: sub\
188
+ mission_files\x0a \
189
+ palette: t\
190
+ heme\x0a }\x0a}\x0a\
191
+ \x00\x00\x03\xeb\
192
+ i\
193
+ mport QtQuick\x0aim\
194
+ port QtQuick.Con\
195
+ trols\x0aimport QtQ\
196
+ uick.Layouts\x0a\x0aIt\
197
+ em {\x0a propert\
198
+ y alias text: co\
199
+ ntent.text\x0a p\
200
+ roperty int line\
201
+ Width: 3\x0a pro\
202
+ perty color line\
203
+ Colour: palette.\
204
+ accent\x0a prope\
205
+ rty alias conten\
206
+ t: content\x0a\x0a \
207
+ Layout.fillWidth\
208
+ : true\x0a heigh\
209
+ t: content.conte\
210
+ ntHeight\x0a cli\
211
+ p: true\x0a\x0a Ite\
212
+ m {\x0a anch\
213
+ ors.fill: parent\
214
+ \x0a height:\
215
+ content.content\
216
+ Height\x0a\x0a \
217
+ Rectangle {\x0a \
218
+ id: deco\
219
+ ration\x0a \
220
+ width: lineWi\
221
+ dth\x0a \
222
+ color: lineColou\
223
+ r\x0a ra\
224
+ dius: 1\x0a \
225
+ anchors {\x0a \
226
+ le\
227
+ ft: parent.left\x0a\
228
+ \
229
+ top: parent.top\x0a\
230
+ \
231
+ bottom: parent.b\
232
+ ottom\x0a \
233
+ }\x0a }\x0a\x0a \
234
+ Text/*Edi\
235
+ t*/ {\x0a \
236
+ id: content\x0a \
237
+ Layout\
238
+ .fillWidth: true\
239
+ \x0a col\
240
+ or: palette.text\
241
+ \x0a //r\
242
+ eadOnly: true\x0a \
243
+ //text\
244
+ Format: TextEdit\
245
+ .AutoText\x0a \
246
+ anchors {\x0a\
247
+ \
248
+ left: decoration\
249
+ .right\x0a \
250
+ leftMargi\
251
+ n: 10\x0a \
252
+ right: par\
253
+ ent.right\x0a \
254
+ }\x0a \
255
+ }\x0a }\x0a}\x0a\
256
+ \x00\x00\x08C\
257
+ i\
258
+ mport QtQuick\x0aim\
259
+ port QtQuick.Lay\
260
+ outs\x0a\x0aItem {\x0a \
261
+ id: delegate\x0a \
262
+ height: childr\
263
+ enRect.height\x0a \
264
+ anchors {\x0a \
265
+ left: parent\
266
+ .left\x0a ri\
267
+ ght: parent.righ\
268
+ t\x0a }\x0a\x0a Col\
269
+ umnLayout {\x0a \
270
+ spacing: 0\x0a\x0a\
271
+ anchors \
272
+ {\x0a le\
273
+ ft: parent.left\x0a\
274
+ righ\
275
+ t: parent.right\x0a\
276
+ }\x0a\x0a \
277
+ RowLayout {\x0a \
278
+ heigh\
279
+ t: childrenRect.\
280
+ implicitHeight\x0a \
281
+ Layou\
282
+ t.fillWidth: tru\
283
+ e\x0a sp\
284
+ acing: 10\x0a\x0a \
285
+ Image {\x0a \
286
+ f\
287
+ unction attachme\
288
+ ntIcon(downloadS\
289
+ tatus) {\x0a \
290
+ swi\
291
+ tch(downloadStat\
292
+ us)\x0a \
293
+ {\x0a \
294
+ \
295
+ case \x22DOWNLOAD\
296
+ ED\x22:\x0a \
297
+ \
298
+ return \x22qrc:///\
299
+ icons/universal/\
300
+ downloads/downlo\
301
+ aded.svg\x22;\x0a \
302
+ \
303
+ case \x22FAILED\x22\
304
+ :\x0a \
305
+ re\
306
+ turn \x22qrc:///ico\
307
+ ns/universal/dow\
308
+ nloads/download_\
309
+ failed.svg\x22;\x0a \
310
+ \
311
+ case \x22NOT_D\
312
+ OWNLOADED\x22:\x0a \
313
+ \
314
+ return \x22\
315
+ qrc:///icons/uni\
316
+ versal/downloads\
317
+ /not_downloaded.\
318
+ svg\x22;\x0a \
319
+ de\
320
+ fault:\x0a \
321
+ \
322
+ return \x22qrc:/\
323
+ //icons/universa\
324
+ l/downloads/unkn\
325
+ own.svg\x22\x0a \
326
+ }\x0a \
327
+ }\
328
+ \x0a\x0a \
329
+ id: fileIcon\x0a \
330
+ s\
331
+ ource: attachmen\
332
+ tIcon(modelData.\
333
+ download_state)\x0a\
334
+ \
335
+ fillMode: Image.\
336
+ PreserveAspectFi\
337
+ t\x0a \
338
+ sourceSize.hei\
339
+ ght: 17\x0a \
340
+ sourceSi\
341
+ ze.width: 17\x0a \
342
+ }\x0a\x0a \
343
+ Text {\x0a \
344
+ i\
345
+ d: file_name_tex\
346
+ t\x0a \
347
+ text: modelDat\
348
+ a.file_name\x0a \
349
+ wrap\
350
+ Mode: Text.WrapA\
351
+ tWordBoundaryOrA\
352
+ nywhere\x0a \
353
+ Layout.f\
354
+ illWidth: true\x0a \
355
+ f\
356
+ ont.underline: t\
357
+ rue\x0a \
358
+ color: palet\
359
+ te.link\x0a\x0a \
360
+ MouseAr\
361
+ ea {\x0a \
362
+ id: tex\
363
+ tClickArea\x0a \
364
+ a\
365
+ nchors.fill: par\
366
+ ent\x0a \
367
+ cursorSh\
368
+ ape: Qt.Pointing\
369
+ HandCursor\x0a \
370
+ h\
371
+ overEnabled: tru\
372
+ e\x0a \
373
+ }\x0a \
374
+ }\x0a }\x0a\x0a \
375
+ Spacer {\x0a \
376
+ size: \
377
+ 5\x0a vi\
378
+ sible: index !==\
379
+ count - 1\x0a \
380
+ }\x0a }\x0a\x0a \
381
+ Connections {\x0a \
382
+ target: te\
383
+ xtClickArea\x0a\x0a \
384
+ function on\
385
+ Clicked() {\x0a \
386
+ modelDat\
387
+ a.opened(modelDa\
388
+ ta.resource_id)\x0a\
389
+ }\x0a }\x0a\
390
+ }\x0a\
391
+ \x00\x00\x01\xdd\
392
+ \x0a\
393
+ \x0a/*\x0aThis is a UI\
394
+ file (.ui.qml) \
395
+ that is intended\
396
+ to be edited in\
397
+ Qt Design Studi\
398
+ o only.\x0aIt is su\
399
+ pposed to be str\
400
+ ictly declarativ\
401
+ e and only uses \
402
+ a subset of QML.\
403
+ If you edit\x0athi\
404
+ s file manually,\
405
+ you might intro\
406
+ duce QML code th\
407
+ at is not suppor\
408
+ ted by Qt Design\
409
+ Studio.\x0aCheck o\
410
+ ut https://doc.q\
411
+ t.io/qtcreator/c\
412
+ reator-quick-ui-\
413
+ forms.html for d\
414
+ etails on .ui.qm\
415
+ l files.\x0a*/\x0aimpo\
416
+ rt QtQuick\x0a\x0aList\
417
+ View {\x0a id: v\
418
+ iew\x0a model: C\
419
+ ommentsListModel\
420
+ {}\x0a delegate\
421
+ : CommentsListDe\
422
+ legate {}\x0a}\x0a\
423
+ \x00\x00\x08\xb6\
424
+ i\
425
+ mport QtQuick\x0a\x0aL\
426
+ istModel {\x0a L\
427
+ istElement {\x0a \
428
+ body: \x22This\
429
+ is a comment. G\
430
+ aze at it. Be am\
431
+ azed.\x22\x0a a\
432
+ uthor: \x22I am Ste\
433
+ ve\x22\x0a date\
434
+ : \x222001-01-01 36\
435
+ :00\x22\x0a att\
436
+ achments: [\x0a \
437
+ ListElem\
438
+ ent {\x0a \
439
+ file_name:\
440
+ \x22texas.pdf\x22\x0a \
441
+ res\
442
+ ource_id: \x221\x22\x0a \
443
+ do\
444
+ wnload_state: \x22N\
445
+ OT_DOWNLOADED\x22\x0a \
446
+ },\x0a \
447
+ ListEl\
448
+ ement {\x0a \
449
+ file_nam\
450
+ e: \x22oh_no_what_a\
451
+ _terribly_long_f\
452
+ ile_name_its_not\
453
+ _like_someone_wo\
454
+ uld_actually_do_\
455
+ this.pdf\x22\x0a \
456
+ resour\
457
+ ce_id: \x222\x22\x0a \
458
+ downl\
459
+ oad_state: \x22FAIL\
460
+ ED\x22\x0a \
461
+ },\x0a L\
462
+ istElement {\x0a \
463
+ fil\
464
+ e_name: \x22i was t\
465
+ ransported to an\
466
+ other world wher\
467
+ e javascript doe\
468
+ sn't exist.cbz\x22\x0a\
469
+ \
470
+ resource_id: \x223\x22\
471
+ \x0a \
472
+ download_state:\
473
+ \x22DOWNLOADED\x22\x0a \
474
+ }\x0a \
475
+ ]\x0a }\x0a \
476
+ ListElement {\x0a \
477
+ body: \x22If \
478
+ Morbius has a mi\
479
+ llion fans, I am\
480
+ one of them.\x5cnI\
481
+ f Morbius has 5 \
482
+ fans, I am one o\
483
+ f them.\x5cnIf Morb\
484
+ ius has one fan,\
485
+ That one is me.\
486
+ \x5cnIf Morbius has\
487
+ no fans, I am n\
488
+ o longer alive.\x5c\
489
+ nIf the world is\
490
+ against Morbius\
491
+ , I am against t\
492
+ he world.\x5cnTill \
493
+ my last breath, \
494
+ I'll love Morbiu\
495
+ s (2022).\x22\x0a \
496
+ author: \x22Goku\
497
+ \x22\x0a date: \
498
+ \x221942-16-34 06:6\
499
+ 3\x22\x0a attac\
500
+ hments: [\x0a \
501
+ ListElemen\
502
+ t {\x0a \
503
+ file_name: \x22\
504
+ morbius_x264_108\
505
+ 0.mkv\x22\x0a \
506
+ resource_\
507
+ id: \x22blahblah\x22\x0a \
508
+ d\
509
+ ownload_state: \x22\
510
+ NOT_DOWNLOADED\x22\x0a\
511
+ }\x0a \
512
+ ]\x0a }\x0a \
513
+ ListElement {\x0a\
514
+ body: \x22a\
515
+ aaaaaaaaaaaaaaaa\
516
+ aaaaaaaaaaaaaaaa\
517
+ aaaaaaaaaaaaaaaa\
518
+ aaaaaaaaaaaaaaaa\
519
+ aaaaaaaaaaaaaaaa\
520
+ aaaaaaaaaaaaaaaa\
521
+ aaaaaaaaaaaaaaaa\
522
+ aaaaaaaaaaa\x5cnbbb\
523
+ bbbbbbbbbbbbbbbb\
524
+ bbbbbbbbbbbbbbbb\
525
+ bbbbbbbbbbbbbbbb\
526
+ bbbbbbbbbbbbbbbb\
527
+ bbbbbbbbbbbbbbbb\
528
+ bbbbbbbbbbbbbbbb\
529
+ bbbbbbb\x22\x0a \
530
+ author: \x22Word W\
531
+ rap Test\x22\x0a \
532
+ date: \x222000-02\
533
+ -02\x22\x0a att\
534
+ achments: []\x0a \
535
+ }\x0a ListEleme\
536
+ nt {\x0a bod\
537
+ y: \x22x264 forms t\
538
+ he core of many \
539
+ web video servic\
540
+ es, such as Yout\
541
+ ube, Facebook, V\
542
+ imeo, and Hulu. \
543
+ It is widely use\
544
+ d by television \
545
+ broadcasters and\
546
+ ISPs.\x22\x0a \
547
+ author: \x22BideoJA\
548
+ N Wordsblahblah\x22\
549
+ \x0a date: \x22\
550
+ 2027-07-28\x22\x0a \
551
+ attachments:\
552
+ [\x0a L\
553
+ istElement {\x0a \
554
+ fil\
555
+ e_name: \x22Ass1_SO\
556
+ MEDUDE_48.pdf\x22\x0a \
557
+ r\
558
+ esource_id: \x22bla\
559
+ h_v345\x22\x0a \
560
+ download\
561
+ _state: \x22DOWNLOA\
562
+ DED\x22\x0a \
563
+ }\x0a ]\x0a \
564
+ }\x0a}\x0a\
565
+ \x00\x00\x01\xe3\
566
+ \x0a\
567
+ \x0a/*\x0aThis is a UI\
568
+ file (.ui.qml) \
569
+ that is intended\
570
+ to be edited in\
571
+ Qt Design Studi\
572
+ o only.\x0aIt is su\
573
+ pposed to be str\
574
+ ictly declarativ\
575
+ e and only uses \
576
+ a subset of QML.\
577
+ If you edit\x0athi\
578
+ s file manually,\
579
+ you might intro\
580
+ duce QML code th\
581
+ at is not suppor\
582
+ ted by Qt Design\
583
+ Studio.\x0aCheck o\
584
+ ut https://doc.q\
585
+ t.io/qtcreator/c\
586
+ reator-quick-ui-\
587
+ forms.html for d\
588
+ etails on .ui.qm\
589
+ l files.\x0a*/\x0aimpo\
590
+ rt QtQuick\x0a\x0aList\
591
+ View {\x0a id: v\
592
+ iew\x0a model: A\
593
+ ttachmentsListMo\
594
+ del {}\x0a deleg\
595
+ ate: Attachments\
596
+ ListDelegate {}\x0a\
597
+ }\x0a\
598
+ \x00\x00\x00N\
599
+ i\
600
+ mport QtQuick\x0a\x0aI\
601
+ tem {\x0a proper\
602
+ ty real size\x0a \
603
+ height: size\x0a \
604
+ width: 1\x0a}\x0a\
605
+ "
606
+
607
+ qt_resource_name = b"\
608
+ \x00\x03\
609
+ \x00\x00x<\
610
+ \x00q\
611
+ \x00m\x00l\
612
+ \x00\x1b\
613
+ \x0d\x0f\x19\xfc\
614
+ \x00C\
615
+ \x00o\x00m\x00m\x00e\x00n\x00t\x00s\x00L\x00i\x00s\x00t\x00D\x00e\x00l\x00e\x00g\
616
+ \x00a\x00t\x00e\x00.\x00u\x00i\x00.\x00q\x00m\x00l\
617
+ \x00\x18\
618
+ \x04\x161<\
619
+ \x00A\
620
+ \x00t\x00t\x00a\x00c\x00h\x00m\x00e\x00n\x00t\x00s\x00L\x00i\x00s\x00t\x00M\x00o\
621
+ \x00d\x00e\x00l\x00.\x00q\x00m\x00l\
622
+ \x00\x10\
623
+ \x03\xe1\xc1\xfc\
624
+ \x00C\
625
+ \x00o\x00m\x00m\x00e\x00n\x00t\x00s\x00P\x00a\x00n\x00e\x00.\x00q\x00m\x00l\
626
+ \x00\x13\
627
+ \x08\xe5\xf4\x1c\
628
+ \x00T\
629
+ \x00h\x00e\x00m\x00e\x00d\x00R\x00e\x00c\x00t\x00a\x00n\x00g\x00l\x00e\x00.\x00q\
630
+ \x00m\x00l\
631
+ \x00\x13\
632
+ \x05\xa6\xc5|\
633
+ \x00A\
634
+ \x00t\x00t\x00a\x00c\x00h\x00m\x00e\x00n\x00t\x00s\x00P\x00a\x00n\x00e\x00.\x00q\
635
+ \x00m\x00l\
636
+ \x00\x14\
637
+ \x0c\x17\xd1<\
638
+ \x00D\
639
+ \x00e\x00c\x00o\x00r\x00a\x00t\x00e\x00d\x00T\x00e\x00x\x00t\x00.\x00u\x00i\x00.\
640
+ \x00q\x00m\x00l\
641
+ \x00\x1b\
642
+ \x0c\xf7\xd6\xbc\
643
+ \x00A\
644
+ \x00t\x00t\x00a\x00c\x00h\x00m\x00e\x00n\x00t\x00s\x00L\x00i\x00s\x00t\x00D\x00e\
645
+ \x00l\x00e\x00g\x00a\x00t\x00e\x00.\x00q\x00m\x00l\
646
+ \x00\x13\
647
+ \x0a.\xb3\xfc\
648
+ \x00C\
649
+ \x00o\x00m\x00m\x00e\x00n\x00t\x00s\x00L\x00i\x00s\x00t\x00.\x00u\x00i\x00.\x00q\
650
+ \x00m\x00l\
651
+ \x00\x15\
652
+ \x0cYK\xbc\
653
+ \x00C\
654
+ \x00o\x00m\x00m\x00e\x00n\x00t\x00s\x00L\x00i\x00s\x00t\x00M\x00o\x00d\x00e\x00l\
655
+ \x00.\x00q\x00m\x00l\
656
+ \x00\x16\
657
+ \x0dg\x00\x9c\
658
+ \x00A\
659
+ \x00t\x00t\x00a\x00c\x00h\x00m\x00e\x00n\x00t\x00s\x00L\x00i\x00s\x00t\x00.\x00u\
660
+ \x00i\x00.\x00q\x00m\x00l\
661
+ \x00\x0d\
662
+ \x01wq\xfc\
663
+ \x00S\
664
+ \x00p\x00a\x00c\x00e\x00r\x00.\x00u\x00i\x00.\x00q\x00m\x00l\
665
+ "
666
+
667
+ qt_resource_struct = b"\
668
+ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
669
+ \x00\x00\x00\x00\x00\x00\x00\x00\
670
+ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x0b\x00\x00\x00\x02\
671
+ \x00\x00\x00\x00\x00\x00\x00\x00\
672
+ \x00\x00\x01\xf4\x00\x00\x00\x00\x00\x01\x00\x00#i\
673
+ \x00\x00\x01\x94S\xec~\x99\
674
+ \x00\x00\x00~\x00\x00\x00\x00\x00\x01\x00\x00\x05[\
675
+ \x00\x00\x01\x94T\xb8\x224\
676
+ \x00\x00\x00H\x00\x00\x00\x00\x00\x01\x00\x00\x03S\
677
+ \x00\x00\x01\x94S\xec~\x97\
678
+ \x00\x00\x00\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x09\xff\
679
+ \x00\x00\x01\x94T\xb8Af\
680
+ \x00\x00\x00\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x06\x02\
681
+ \x00\x00\x01\x94T\xc4\xc8\xa7\
682
+ \x00\x00\x01f\x00\x00\x00\x00\x00\x01\x00\x00\x16\xe7\
683
+ \x00\x00\x01\x94S\xec~\x98\
684
+ \x00\x00\x00\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xb1\
685
+ \x00\x00\x01\x94S\xec~\x98\
686
+ \x00\x00\x01\x92\x00\x00\x00\x00\x00\x01\x00\x00\x18\xc8\
687
+ \x00\x00\x01\x94S\xec~\x98\
688
+ \x00\x00\x01*\x00\x00\x00\x00\x00\x01\x00\x00\x0e\xa0\
689
+ \x00\x00\x01\x94S\xec~\x97\
690
+ \x00\x00\x00\x0c\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\
691
+ \x00\x00\x01\x94S\xec~\x98\
692
+ \x00\x00\x01\xc2\x00\x00\x00\x00\x00\x01\x00\x00!\x82\
693
+ \x00\x00\x01\x94S\xec~\x97\
694
+ "
695
+
696
+
697
+ def qInitResources():
698
+ QtCore.qRegisterResourceData(
699
+ 0x03, qt_resource_struct, qt_resource_name, qt_resource_data
700
+ )
701
+
702
+
703
+ def qCleanupResources():
704
+ QtCore.qUnregisterResourceData(
705
+ 0x03, qt_resource_struct, qt_resource_name, qt_resource_data
706
+ )
707
+
708
+
709
+ qInitResources()
@@ -0,0 +1,16 @@
1
+ <!DOCTYPE RCC>
2
+ <RCC version="1.0">
3
+ <qresource prefix="/qml/">
4
+ <file>AttachmentsList.ui.qml</file>
5
+ <file>AttachmentsListDelegate.qml</file>
6
+ <file>AttachmentsListModel.qml</file>
7
+ <file>AttachmentsPane.qml</file>
8
+ <file>CommentsList.ui.qml</file>
9
+ <file>CommentsListDelegate.ui.qml</file>
10
+ <file>CommentsListModel.qml</file>
11
+ <file>CommentsPane.qml</file>
12
+ <file>DecoratedText.ui.qml</file>
13
+ <file>Spacer.ui.qml</file>
14
+ <file>ThemedRectangle.qml</file>
15
+ </qresource>
16
+ </RCC>
@@ -1,5 +1,4 @@
1
- from pathlib import Path
2
-
1
+ from PySide6.QtCore import QUrl
3
2
  from PySide6.QtQuick import QQuickView
4
3
  from PySide6.QtWidgets import QGroupBox, QWidget
5
4
 
@@ -9,7 +8,7 @@ import qcanvas.util.ui_tools as ui
9
8
 
10
9
 
11
10
  class QmlPane(QGroupBox):
12
- def __init__(self, qml_path: Path, parent: QWidget | None = None):
11
+ def __init__(self, qml_path: QUrl, parent: QWidget | None = None):
13
12
  super().__init__(parent)
14
13
  self.qview = QQuickView(parent)
15
14
  self._qml_path = qml_path
@@ -19,4 +18,4 @@ class QmlPane(QGroupBox):
19
18
  self.setLayout(ui.hbox(QWidget.createWindowContainer(self.qview, self)))
20
19
 
21
20
  def load_view(self):
22
- self.qview.setSource(str(self._qml_path))
21
+ self.qview.setSource(self._qml_path)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes