qcanvas 2.0.3__tar.gz → 2.0.5__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.
- {qcanvas-2.0.3 → qcanvas-2.0.5}/PKG-INFO +5 -6
- {qcanvas-2.0.3 → qcanvas-2.0.5}/README.md +2 -3
- {qcanvas-2.0.3 → qcanvas-2.0.5}/pyproject.toml +5 -6
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/__init__.py +15 -9
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/qcanvas_window.py +8 -4
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/app.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/backend_connectors/__init__.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/backend_connectors/frontend_resource_manager.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/backend_connectors/qcanvas_task_master.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/icons/__init__.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/icons/_icon_type.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/icons/icons.qrc +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/icons/rc_icons.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/settings/__init__.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/settings/_client_settings.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/settings/_course_settings.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/settings/_mapped_setting.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/settings/_ui_settings.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/theme.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/__init__.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/__init__.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/content_tree.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/course_tree/__init__.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/course_tree/_course_icon_generator.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/course_tree/course_tree.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/course_viewer.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/__init__.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/assignment_tab/__init__.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tab.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tree.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/constants.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/content_tab.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/file_tab/__init__.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/file_tab/file_tab.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/file_tab/file_tree.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/file_tab/pages_file_tree.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/mail_tab/__init__.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/mail_tab/mail_tab.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/mail_tab/mail_tree.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/page_tab/__init__.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/page_tab/page_tab.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/page_tab/page_tree.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/resource_rich_browser.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tree_widget_data_item.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/memory_tree/__init__.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/memory_tree/_tree_memory.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/memory_tree/memory_tree_widget.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/memory_tree/memory_tree_widget_item.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/__init__.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/course_viewer_container.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/options/__init__.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/options/auto_download_resources_option.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/options/quick_sync_option.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/options/sync_on_start_option.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/options/theme_selection_menu.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/status_bar_progress_display.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/__init__.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/attachments_pane.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/comments_pane.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/AttachmentsList.ui.qml +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/AttachmentsListDelegate.qml +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/AttachmentsListModel.qml +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/AttachmentsPane.qml +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/CommentsList.ui.qml +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/CommentsListDelegate.ui.qml +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/CommentsListModel.qml +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/CommentsPane.qml +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/DecoratedText.ui.qml +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/Spacer.ui.qml +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/ThemedRectangle.qml +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/__init__.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/rc_qml.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml/rc_qml.qrc +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml_bridge_types.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qml_components/qml_pane.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/setup/__init__.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/setup/setup_checker.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/setup/setup_dialog.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/__init__.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/auto_downloader.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/basic_fonts.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/context_dict.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/file_icons.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/html_cleaner.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/layouts.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/logs.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/paths.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/qurl_util.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/runtime.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/ui_tools.py +0 -0
- {qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/util/url_checker.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: qcanvas
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.5
|
|
4
4
|
Summary: View courses from Canvas LMS
|
|
5
5
|
Author: QCanvas
|
|
6
6
|
Author-email: QCanvas@noreply.codeberg.org
|
|
@@ -8,10 +8,10 @@ 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.
|
|
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.
|
|
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,8 +35,7 @@ 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
|
-
|
|
39
|
-
> The appimage version is currently broken and may be dropped in the future.
|
|
38
|
+
An appimage version is also available from releases but is not recommended.
|
|
40
39
|
|
|
41
40
|
# Development/Run from source
|
|
42
41
|
|
|
@@ -63,7 +62,7 @@ poetry run python -m qcanvas
|
|
|
63
62
|
## Build custom AppImage
|
|
64
63
|
|
|
65
64
|
> [!WARNING]
|
|
66
|
-
> 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.
|
|
67
66
|
|
|
68
67
|
> [!IMPORTANT]
|
|
69
68
|
> You will need [Appimagetool](https://github.com/AppImage/appimagetool)
|
|
@@ -14,8 +14,7 @@ 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
|
-
|
|
18
|
-
> The appimage version is currently broken and may be dropped in the future.
|
|
17
|
+
An appimage version is also available from releases but is not recommended.
|
|
19
18
|
|
|
20
19
|
# Development/Run from source
|
|
21
20
|
|
|
@@ -42,7 +41,7 @@ poetry run python -m qcanvas
|
|
|
42
41
|
## Build custom AppImage
|
|
43
42
|
|
|
44
43
|
> [!WARNING]
|
|
45
|
-
> 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.
|
|
46
45
|
|
|
47
46
|
> [!IMPORTANT]
|
|
48
47
|
> You will need [Appimagetool](https://github.com/AppImage/appimagetool)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "qcanvas"
|
|
3
|
-
version = "2.0.
|
|
3
|
+
version = "2.0.5"
|
|
4
4
|
description = "View courses from Canvas LMS"
|
|
5
5
|
authors = ["QCanvas <QCanvas@noreply.codeberg.org>"]
|
|
6
6
|
readme = "README.md"
|
|
@@ -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.
|
|
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.
|
|
24
|
+
aiosqlite = "^0.21.0"
|
|
25
25
|
pyqtdarktheme-fork = "^2.3.2"
|
|
26
26
|
qasync = "^0.27.1"
|
|
27
27
|
platformdirs = "^4.2.2"
|
|
@@ -30,8 +30,7 @@ cachetools = "^5.5.0"
|
|
|
30
30
|
aiofile = "^3.9.0"
|
|
31
31
|
|
|
32
32
|
[tool.poetry.group.flatpak-exclude.dependencies]
|
|
33
|
-
pyside6-essentials = "^6.
|
|
34
|
-
shiboken6 = "6.8.1" # pinned because latest release is ONLY a macos version for some reason
|
|
33
|
+
pyside6-essentials = "^6.9.0"
|
|
35
34
|
setuptools = "^71.1.0"
|
|
36
35
|
pyinstaller = "^6.10.0"
|
|
37
36
|
|
|
@@ -54,4 +53,4 @@ build-backend = "poetry.core.masonry.api"
|
|
|
54
53
|
"__init__.py" = ["F401"]
|
|
55
54
|
|
|
56
55
|
[tool.ruff.lint.isort]
|
|
57
|
-
known-first-party = ["libqcanvas_clients", "asynctaskpool", "libqcanvas"]
|
|
56
|
+
known-first-party = ["libqcanvas_clients", "asynctaskpool", "libqcanvas"]
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
# nuitka-project: --nofollow-import-to=yt_dlp.extractor.lazy_extractors
|
|
24
24
|
|
|
25
25
|
import logging
|
|
26
|
+
import logging.config
|
|
26
27
|
from logging import INFO, WARNING
|
|
27
28
|
|
|
28
29
|
import qcanvas.app as app
|
|
@@ -34,18 +35,23 @@ def main():
|
|
|
34
35
|
|
|
35
36
|
logging.basicConfig(
|
|
36
37
|
filemode="w",
|
|
37
|
-
filename=paths.data_storage() / "
|
|
38
|
+
filename=paths.data_storage() / "qcanvas.log",
|
|
38
39
|
level="WARN",
|
|
39
40
|
)
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
log_config = paths.data_storage() / "logging.ini"
|
|
43
|
+
|
|
44
|
+
if log_config.exists():
|
|
45
|
+
logging.config.fileConfig(log_config, disable_existing_loggers=False)
|
|
46
|
+
else:
|
|
47
|
+
logs.set_levels(
|
|
48
|
+
{
|
|
49
|
+
"qcanvas": INFO,
|
|
50
|
+
"qcanvas.ui": WARNING,
|
|
51
|
+
"libqcanvas": INFO,
|
|
52
|
+
"qcanvas.ui.main_ui.status_bar_progress_display": INFO,
|
|
53
|
+
}
|
|
54
|
+
)
|
|
49
55
|
|
|
50
56
|
app.launch()
|
|
51
57
|
|
|
@@ -234,10 +234,14 @@ class QCanvasWindow(QMainWindow):
|
|
|
234
234
|
opening_progress_dialog.setWindowTitle("Please wait")
|
|
235
235
|
opening_progress_dialog.show()
|
|
236
236
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
237
|
+
try:
|
|
238
|
+
open_url = QUrl(
|
|
239
|
+
await self._qcanvas.canvas_client.get_temporary_session_url()
|
|
240
|
+
)
|
|
241
|
+
_logger.info(f"Opening URL {open_url}")
|
|
242
|
+
QDesktopServices.openUrl(open_url)
|
|
243
|
+
finally:
|
|
244
|
+
opening_progress_dialog.close()
|
|
241
245
|
|
|
242
246
|
@Slot()
|
|
243
247
|
def _open_downloads_folder(self) -> None:
|
|
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
|
|
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
|
{qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/course_tree/_course_icon_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tab.py
RENAMED
|
File without changes
|
{qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tree.py
RENAMED
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qcanvas-2.0.3 → qcanvas-2.0.5}/qcanvas/ui/qcanvas_window/options/auto_download_resources_option.py
RENAMED
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|