qcanvas 1.2.0__py3-none-any.whl → 2026.1.19__py3-none-any.whl
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.
- qcanvas/__init__.py +60 -0
- qcanvas/app.py +72 -0
- qcanvas/backend_connectors/frontend_resource_manager.py +13 -5
- qcanvas/backend_connectors/qcanvas_task_master.py +2 -2
- qcanvas/icons/__init__.py +5 -5
- qcanvas/icons/_icon_type.py +1 -1
- qcanvas/icons/icons.qrc +39 -35
- qcanvas/icons/rc_icons.py +1298 -1197
- qcanvas/settings/__init__.py +6 -0
- qcanvas/{util/settings → settings}/_client_settings.py +4 -4
- qcanvas/settings/_course_settings.py +54 -0
- qcanvas/{util/settings → settings}/_mapped_setting.py +2 -5
- qcanvas/{util/settings → settings}/_ui_settings.py +5 -5
- qcanvas/theme.py +101 -0
- qcanvas/ui/course_viewer/content_tree.py +9 -12
- qcanvas/ui/course_viewer/course_tree/_course_icon_generator.py +3 -3
- qcanvas/ui/course_viewer/course_tree/course_tree.py +9 -8
- qcanvas/ui/course_viewer/course_viewer.py +42 -56
- qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tab.py +107 -29
- qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tree.py +4 -4
- qcanvas/ui/course_viewer/tabs/constants.py +1 -0
- qcanvas/ui/course_viewer/tabs/content_tab.py +33 -39
- qcanvas/ui/course_viewer/tabs/file_tab/file_tab.py +4 -4
- qcanvas/ui/course_viewer/tabs/file_tab/file_tree.py +7 -10
- qcanvas/ui/course_viewer/tabs/file_tab/pages_file_tree.py +6 -7
- qcanvas/ui/course_viewer/tabs/mail_tab/mail_tab.py +50 -27
- qcanvas/ui/course_viewer/tabs/mail_tab/mail_tree.py +7 -8
- qcanvas/ui/course_viewer/tabs/page_tab/page_tab.py +3 -3
- qcanvas/ui/course_viewer/tabs/page_tab/page_tree.py +5 -5
- qcanvas/ui/course_viewer/tabs/resource_rich_browser.py +18 -32
- qcanvas/ui/course_viewer/tree_widget_data_item.py +1 -1
- qcanvas/ui/memory_tree/_tree_memory.py +45 -42
- qcanvas/ui/memory_tree/memory_tree_widget.py +22 -18
- qcanvas/ui/memory_tree/memory_tree_widget_item.py +3 -3
- qcanvas/ui/qcanvas_window/__init__.py +1 -0
- qcanvas/ui/{main_ui → qcanvas_window}/course_viewer_container.py +10 -10
- qcanvas/ui/{main_ui → qcanvas_window}/options/auto_download_resources_option.py +5 -5
- qcanvas/ui/{main_ui → qcanvas_window}/options/quick_sync_option.py +7 -6
- qcanvas/ui/{main_ui → qcanvas_window}/options/sync_on_start_option.py +7 -6
- qcanvas/ui/{main_ui → qcanvas_window}/options/theme_selection_menu.py +10 -10
- qcanvas/ui/{main_ui → qcanvas_window}/qcanvas_window.py +57 -41
- qcanvas/ui/{main_ui → qcanvas_window}/status_bar_progress_display.py +5 -6
- qcanvas/ui/qml_components/__init__.py +4 -0
- qcanvas/ui/qml_components/attachments_pane.py +70 -0
- qcanvas/ui/qml_components/comments_pane.py +83 -0
- qcanvas/ui/qml_components/qml/AttachmentsList.ui.qml +15 -0
- qcanvas/ui/qml_components/qml/AttachmentsListDelegate.qml +77 -0
- qcanvas/ui/qml_components/qml/AttachmentsListModel.qml +19 -0
- qcanvas/ui/qml_components/qml/AttachmentsPane.qml +11 -0
- qcanvas/ui/qml_components/qml/CommentsList.ui.qml +15 -0
- qcanvas/ui/qml_components/qml/CommentsListDelegate.ui.qml +118 -0
- qcanvas/ui/qml_components/qml/CommentsListModel.qml +56 -0
- qcanvas/ui/qml_components/qml/CommentsPane.qml +11 -0
- qcanvas/ui/qml_components/qml/DecoratedText.ui.qml +44 -0
- qcanvas/ui/qml_components/qml/Spacer.ui.qml +7 -0
- qcanvas/ui/qml_components/qml/ThemedRectangle.qml +53 -0
- qcanvas/ui/qml_components/qml/__init__.py +3 -0
- qcanvas/ui/qml_components/qml/rc_qml.py +709 -0
- qcanvas/ui/qml_components/qml/rc_qml.qrc +16 -0
- qcanvas/ui/qml_components/qml_bridge_types.py +95 -0
- qcanvas/ui/qml_components/qml_pane.py +21 -0
- qcanvas/ui/setup/setup_checker.py +1 -1
- qcanvas/ui/setup/setup_dialog.py +28 -14
- qcanvas/util/auto_downloader.py +9 -7
- qcanvas/util/basic_fonts.py +2 -2
- qcanvas/util/context_dict.py +12 -0
- qcanvas/util/file_icons.py +11 -19
- qcanvas/util/layouts.py +5 -7
- qcanvas/util/paths.py +17 -6
- qcanvas/util/qurl_util.py +1 -1
- qcanvas/util/ui_tools.py +118 -8
- qcanvas/util/url_checker.py +1 -1
- qcanvas-2026.1.19.dist-info/METADATA +95 -0
- qcanvas-2026.1.19.dist-info/RECORD +92 -0
- {qcanvas-1.2.0.dist-info → qcanvas-2026.1.19.dist-info}/WHEEL +1 -1
- qcanvas-2026.1.19.dist-info/entry_points.txt +3 -0
- qcanvas/app_start/__init__.py +0 -59
- qcanvas/icons/_update_icons.py +0 -89
- qcanvas/icons/dark/actions/exit.svg +0 -3
- qcanvas/icons/dark/actions/mark_all_read.svg +0 -3
- qcanvas/icons/dark/actions/open_downloads.svg +0 -3
- qcanvas/icons/dark/actions/quick_login.svg +0 -3
- qcanvas/icons/dark/actions/sync.svg +0 -3
- qcanvas/icons/dark/branding/logo_transparent.svg +0 -303
- qcanvas/icons/dark/options/auto_download.svg +0 -3
- qcanvas/icons/dark/options/theme.svg +0 -3
- qcanvas/icons/dark/tabs/assignments.svg +0 -3
- qcanvas/icons/dark/tabs/mail.svg +0 -3
- qcanvas/icons/dark/tabs/pages.svg +0 -3
- qcanvas/icons/dark/tree_items/assignment.svg +0 -3
- qcanvas/icons/dark/tree_items/mail.svg +0 -3
- qcanvas/icons/dark/tree_items/module.svg +0 -3
- qcanvas/icons/dark/tree_items/page.svg +0 -3
- qcanvas/icons/light/actions/exit.svg +0 -3
- qcanvas/icons/light/actions/mark_all_read.svg +0 -3
- qcanvas/icons/light/actions/open_downloads.svg +0 -3
- qcanvas/icons/light/actions/quick_login.svg +0 -3
- qcanvas/icons/light/actions/sync.svg +0 -3
- qcanvas/icons/light/branding/logo_transparent.svg +0 -304
- qcanvas/icons/light/options/auto_download.svg +0 -3
- qcanvas/icons/light/options/ignore_old.svg +0 -3
- qcanvas/icons/light/options/include_videos.svg +0 -3
- qcanvas/icons/light/options/theme.svg +0 -3
- qcanvas/icons/light/tabs/assignments.svg +0 -3
- qcanvas/icons/light/tabs/mail.svg +0 -3
- qcanvas/icons/light/tabs/pages.svg +0 -3
- qcanvas/icons/light/tree_items/assignment.svg +0 -3
- qcanvas/icons/light/tree_items/mail.svg +0 -3
- qcanvas/icons/light/tree_items/module.svg +0 -3
- qcanvas/icons/light/tree_items/page.svg +0 -3
- qcanvas/icons/universal/branding/main_icon.svg +0 -325
- qcanvas/icons/universal/downloads/download_failed.svg +0 -23
- qcanvas/icons/universal/downloads/downloaded.svg +0 -23
- qcanvas/icons/universal/downloads/not_downloaded.svg +0 -23
- qcanvas/icons/universal/downloads/unknown.svg +0 -6
- qcanvas/icons/universal/tabs/assignments_new_content.svg +0 -3
- qcanvas/icons/universal/tabs/mail_new_content.svg +0 -3
- qcanvas/icons/universal/tabs/pages_new_content.svg +0 -3
- qcanvas/icons/universal/tree_items/semester.svg +0 -108
- qcanvas/run.py +0 -54
- qcanvas/ui/course_viewer/tabs/util.py +0 -11
- qcanvas/ui/main_ui/__init__.py +0 -0
- qcanvas/util/settings/__init__.py +0 -9
- qcanvas/util/themes/__init__.py +0 -2
- qcanvas/util/themes/_colour_scheme_helper.py +0 -38
- qcanvas/util/themes/_selected_theme.py +0 -10
- qcanvas/util/themes/_theme_changed_event.py +0 -17
- qcanvas/util/themes/_theme_changer.py +0 -86
- qcanvas-1.2.0.dist-info/METADATA +0 -71
- qcanvas-1.2.0.dist-info/RECORD +0 -118
- qcanvas-1.2.0.dist-info/entry_points.txt +0 -3
- /qcanvas/ui/{main_ui → qcanvas_window}/options/__init__.py +0 -0
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
|
|
3
|
-
from qtpy.QtCore import QObject, Signal
|
|
4
|
-
|
|
5
|
-
_logger = logging.getLogger(__name__)
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class ThemeChangedEvent(QObject):
|
|
9
|
-
theme_changed = Signal()
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
theme_changed_event = ThemeChangedEvent(None)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
def theme_changed() -> Signal:
|
|
16
|
-
global theme_changed_event
|
|
17
|
-
return theme_changed_event.theme_changed
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
|
|
3
|
-
import qdarktheme
|
|
4
|
-
from qtpy.QtCore import Slot
|
|
5
|
-
from qtpy.QtGui import QIcon
|
|
6
|
-
from qtpy.QtWidgets import QApplication, QStyleFactory
|
|
7
|
-
|
|
8
|
-
from qcanvas.util.themes._colour_scheme_helper import (
|
|
9
|
-
colour_scheme_changed,
|
|
10
|
-
is_dark_colour_scheme,
|
|
11
|
-
)
|
|
12
|
-
from qcanvas.util.themes._selected_theme import SelectedTheme
|
|
13
|
-
from qcanvas.util.themes._theme_changed_event import theme_changed
|
|
14
|
-
|
|
15
|
-
_logger = logging.getLogger(__name__)
|
|
16
|
-
|
|
17
|
-
default_theme = "auto"
|
|
18
|
-
_is_dark_mode: bool | None = None
|
|
19
|
-
_selected_theme: SelectedTheme | None = None
|
|
20
|
-
|
|
21
|
-
_universal_path = ":icons/universal"
|
|
22
|
-
_dark_path = ":icons/dark"
|
|
23
|
-
_light_path = ":icons/light"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
def apply(theme: str) -> None:
|
|
27
|
-
global _is_dark_mode, _selected_theme
|
|
28
|
-
|
|
29
|
-
theme = ensure_theme_is_valid(theme)
|
|
30
|
-
was_dark_mode = _is_dark_mode
|
|
31
|
-
|
|
32
|
-
if theme != "native":
|
|
33
|
-
if theme == "auto":
|
|
34
|
-
_is_dark_mode = is_dark_colour_scheme()
|
|
35
|
-
_selected_theme = SelectedTheme.AUTO
|
|
36
|
-
selected_colour_scheme = "dark" if _is_dark_mode else "light"
|
|
37
|
-
else:
|
|
38
|
-
_is_dark_mode = theme == "dark"
|
|
39
|
-
_selected_theme = SelectedTheme.OVERRIDE
|
|
40
|
-
selected_colour_scheme = theme
|
|
41
|
-
|
|
42
|
-
qdarktheme.setup_theme(
|
|
43
|
-
selected_colour_scheme,
|
|
44
|
-
custom_colors={"primary": "e02424"},
|
|
45
|
-
)
|
|
46
|
-
|
|
47
|
-
QApplication.setStyle(QStyleFactory.create("Fusion"))
|
|
48
|
-
else:
|
|
49
|
-
_is_dark_mode = is_dark_colour_scheme()
|
|
50
|
-
_selected_theme = SelectedTheme.NATIVE
|
|
51
|
-
|
|
52
|
-
if was_dark_mode != _is_dark_mode:
|
|
53
|
-
_set_fallback_paths()
|
|
54
|
-
theme_changed().emit()
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
def is_dark_mode() -> bool:
|
|
58
|
-
return _is_dark_mode
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
def ensure_theme_is_valid(theme: str) -> str:
|
|
62
|
-
if theme not in ["auto", "light", "dark", "native"]:
|
|
63
|
-
return default_theme
|
|
64
|
-
else:
|
|
65
|
-
return theme
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
@Slot()
|
|
69
|
-
def _scheme_changed():
|
|
70
|
-
global _selected_theme, _is_dark_mode
|
|
71
|
-
|
|
72
|
-
if _selected_theme == SelectedTheme.AUTO:
|
|
73
|
-
apply("auto")
|
|
74
|
-
elif _selected_theme == SelectedTheme.NATIVE:
|
|
75
|
-
_is_dark_mode = is_dark_colour_scheme()
|
|
76
|
-
_set_fallback_paths()
|
|
77
|
-
theme_changed().emit()
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
def _set_fallback_paths():
|
|
81
|
-
QIcon.setFallbackSearchPaths(
|
|
82
|
-
[_dark_path if _is_dark_mode else _light_path, _universal_path]
|
|
83
|
-
)
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
colour_scheme_changed().connect(_scheme_changed)
|
qcanvas-1.2.0.dist-info/METADATA
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: qcanvas
|
|
3
|
-
Version: 1.2.0
|
|
4
|
-
Summary: QCanvas is a desktop client for Canvas LMS.
|
|
5
|
-
Author: QCanvas
|
|
6
|
-
Author-email: QCanvas@noreply.codeberg.org
|
|
7
|
-
Requires-Python: >3.11.0,<3.13
|
|
8
|
-
Classifier: Programming Language :: Python :: 3
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
10
|
-
Requires-Dist: aiosqlite (>=0.20.0,<0.21.0)
|
|
11
|
-
Requires-Dist: asynctaskpool (>=0.2.1,<0.3.0)
|
|
12
|
-
Requires-Dist: lightdb (>=2.0,<3.0)
|
|
13
|
-
Requires-Dist: platformdirs (>=4.2.2,<5.0.0)
|
|
14
|
-
Requires-Dist: pyqtdarktheme-fork (>=2.3.2,<3.0.0)
|
|
15
|
-
Requires-Dist: qasync (>=0.27.1,<0.28.0)
|
|
16
|
-
Requires-Dist: qcanvas-api-clients (>=0.3.0,<0.4.0)
|
|
17
|
-
Requires-Dist: qcanvas-backend (>=0.2.5,<0.3.0)
|
|
18
|
-
Requires-Dist: qtpy (>=2.4.1,<3.0.0)
|
|
19
|
-
Requires-Dist: sqlalchemy (>=2.0.31,<3.0.0)
|
|
20
|
-
Requires-Dist: validators (>=0.33.0,<0.34.0)
|
|
21
|
-
Description-Content-Type: text/markdown
|
|
22
|
-
|
|
23
|
-
# QCanvas
|
|
24
|
-
|
|
25
|
-
QCanvas is an **unofficial** desktop client for Canvas LMS.
|
|
26
|
-
|
|
27
|
-
https://codeberg.org/QCanvas/QCanvas
|
|
28
|
-
|
|
29
|
-
https://github.com/QCanvas/QCanvasApp
|
|
30
|
-
|
|
31
|
-
# Downloads
|
|
32
|
-
|
|
33
|
-
<a href='https://flathub.org/apps/io.github.qcanvas.QCanvasApp'>
|
|
34
|
-
<img width='240' alt='Get it on Flathub' src='https://flathub.org/api/badge?svg&locale=en'/>
|
|
35
|
-
</a>
|
|
36
|
-
|
|
37
|
-
You can download a **windows** version from [releases](https://github.com/QCanvas/QCanvasApp/releases)
|
|
38
|
-
|
|
39
|
-
The appimage version is *not recommended* as it is not a proper portable appimage. It will only work on debian/ubuntu
|
|
40
|
-
based distros.
|
|
41
|
-
|
|
42
|
-
# Development/Run from source
|
|
43
|
-
|
|
44
|
-
## Prerequisites
|
|
45
|
-
|
|
46
|
-
- Python 3.12+ (use [pyenv](https://github.com/pyenv/pyenv) if your distro does not have that version)
|
|
47
|
-
- [Pipx](https://pipx.pypa.io/stable/) (optional)
|
|
48
|
-
- Poetry (recommended to install using `pipx install poetry`)
|
|
49
|
-
- [Appimagetool](https://github.com/AppImage/appimagetool) (Only for building the appimage)
|
|
50
|
-
|
|
51
|
-
## Get started
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
git clone https://github.com/QCanvas/QCanvasApp.git
|
|
55
|
-
cd QCanvasApp
|
|
56
|
-
|
|
57
|
-
# Enter shell and run it
|
|
58
|
-
poetry shell
|
|
59
|
-
poetry install
|
|
60
|
-
python qcanvas/run.py
|
|
61
|
-
|
|
62
|
-
# Alternatively you can run it like this:
|
|
63
|
-
poetry install
|
|
64
|
-
poetry run python qcanvas/run.py
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Build custom AppImage
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
bash build_appimage.sh
|
|
71
|
-
```
|
qcanvas-1.2.0.dist-info/RECORD
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
qcanvas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
qcanvas/app_start/__init__.py,sha256=r16bg9Otw8Sy6MYLmIt5Nu-oSwyYP8Y2kzMtbmeF6m0,1437
|
|
3
|
-
qcanvas/backend_connectors/__init__.py,sha256=Wj8cmxQng3SSlmlXJyzHaPmvxbkauwsxINckPb7WuHc,108
|
|
4
|
-
qcanvas/backend_connectors/frontend_resource_manager.py,sha256=87oszxCle0Y9AUAHH3wn_7oilY45ddMET-4EnpTtjn0,1322
|
|
5
|
-
qcanvas/backend_connectors/qcanvas_task_master.py,sha256=CTPBvf_9w-livscKNspnd98mNvFLYTYHef0RQSUkfFc,742
|
|
6
|
-
qcanvas/icons/__init__.py,sha256=gczS3dUVDSgkfalmNhnynILAkk4099BE8jWDTmY7fyY,1902
|
|
7
|
-
qcanvas/icons/_icon_type.py,sha256=p5YpGAoJViOA2SB4o4Vw4jI_kDwrvzwCP8NIxUydCjo,901
|
|
8
|
-
qcanvas/icons/_update_icons.py,sha256=iZrmZaaq2rIt5ATL9qJ-x2RhvQ4dDp391RsAhwfirLU,2410
|
|
9
|
-
qcanvas/icons/dark/actions/exit.svg,sha256=FTw6JW0xq-xRh7oHQdhKrJpf2nkm4ot5kVjXXJRgszI,228
|
|
10
|
-
qcanvas/icons/dark/actions/mark_all_read.svg,sha256=V7OEY0hjNmSJtt9Ufu0vgd5BZRH0pLCo5h58Xi0VJhI,201
|
|
11
|
-
qcanvas/icons/dark/actions/open_downloads.svg,sha256=ft5TuP97ErGRq5RUVtEC5HaA28yqbebkZVfz3zfRA4w,359
|
|
12
|
-
qcanvas/icons/dark/actions/quick_login.svg,sha256=I3_raVdsNKuCBazs8wj6JByu2p3qXSZ8_K8eYOmb3hw,982
|
|
13
|
-
qcanvas/icons/dark/actions/sync.svg,sha256=qN8F5qg_TIirjDePfmQgiR0DO5FmSckOP5Wlo2KQhI0,413
|
|
14
|
-
qcanvas/icons/dark/branding/logo_transparent.svg,sha256=1bVg8AK9FepOvWTcu_zDLX2eZ1inYuAMBwZRi252-5o,18660
|
|
15
|
-
qcanvas/icons/dark/options/auto_download.svg,sha256=MYiffHrLsCkLJ55SaKfBkoC3WZTe8Fj8l-jYzON28Mc,284
|
|
16
|
-
qcanvas/icons/dark/options/theme.svg,sha256=9Clv7h2z0YuprG4CoPEJAvl_mUsAeGwepe2tGvYJZoc,383
|
|
17
|
-
qcanvas/icons/dark/tabs/assignments.svg,sha256=MlYp4ibpT5bb3V2nRBwrTfNYzfFkvEX7uf287uy4i5k,502
|
|
18
|
-
qcanvas/icons/dark/tabs/mail.svg,sha256=CoTukvsulJnVtPdTgIExdUdoPtB4W-lnIvs4m-s80vc,334
|
|
19
|
-
qcanvas/icons/dark/tabs/pages.svg,sha256=TCoeLrX-UOzESVJMVVP1XnA6YfGKO7C3BDtH683nJ1k,339
|
|
20
|
-
qcanvas/icons/dark/tree_items/assignment.svg,sha256=MlYp4ibpT5bb3V2nRBwrTfNYzfFkvEX7uf287uy4i5k,502
|
|
21
|
-
qcanvas/icons/dark/tree_items/mail.svg,sha256=CoTukvsulJnVtPdTgIExdUdoPtB4W-lnIvs4m-s80vc,334
|
|
22
|
-
qcanvas/icons/dark/tree_items/module.svg,sha256=mfb16D2rGcVudJd4uTc9sRdN8B7tgaAU5OaxhZ_0daY,902
|
|
23
|
-
qcanvas/icons/dark/tree_items/page.svg,sha256=mLyiil83ycWaCEdQ6KaKTt4h6-HK5os_XzTsIkPlR1w,356
|
|
24
|
-
qcanvas/icons/icons.qrc,sha256=SHWS7nxSwzEDyqu_Z9zIcKbsshY4aoYT6QNazzIY7v0,2251
|
|
25
|
-
qcanvas/icons/light/actions/exit.svg,sha256=hTF_ke8f91D0t5SkNat5mijOiFfwZqg-t7NMIrx8k2w,228
|
|
26
|
-
qcanvas/icons/light/actions/mark_all_read.svg,sha256=pa_VNoSnlwgzrn5UyiRYf1EH3N2Eu3Q96SoO_A59Sf4,201
|
|
27
|
-
qcanvas/icons/light/actions/open_downloads.svg,sha256=wZTOfN7XwVPxaOZ_lTmTSuZvrlHi7L840JlduzjJ3z4,359
|
|
28
|
-
qcanvas/icons/light/actions/quick_login.svg,sha256=0toC_4pROdJQWz6DcLM_UqnRknqckTIcS0ZaJL5o_es,982
|
|
29
|
-
qcanvas/icons/light/actions/sync.svg,sha256=KqQi5DbT7_4OmZ1dwidkC61Tel3thcUHJ-3u1zgEvLw,413
|
|
30
|
-
qcanvas/icons/light/branding/logo_transparent.svg,sha256=DsNOFWHGAVCZ-ue-pf1iatQ1t_IBmnyxs3FNw-UUukg,18647
|
|
31
|
-
qcanvas/icons/light/options/auto_download.svg,sha256=93efpzvsLYYZVze2CKTDhp2x8l-4UsF75DFGMHmCD3I,307
|
|
32
|
-
qcanvas/icons/light/options/ignore_old.svg,sha256=Zn3Dl6DD9omgoqqcM5xAbRYA8fqVGKwooTFYOQZJTVo,484
|
|
33
|
-
qcanvas/icons/light/options/include_videos.svg,sha256=3HmJvM95JFqvE2WXEAIjTc5sPp0aLuKKu7yb0tX5sM4,349
|
|
34
|
-
qcanvas/icons/light/options/theme.svg,sha256=9HCwt6AndJJjgjPgS9BO4mkKWtkigTpUUxct4sw6SI4,383
|
|
35
|
-
qcanvas/icons/light/tabs/assignments.svg,sha256=ci5z-t0MAhTHYoMVXvIyHlZcd3MEYgeGMISxMSX0zes,502
|
|
36
|
-
qcanvas/icons/light/tabs/mail.svg,sha256=l_ITAKZRkq7PbPw1-iY5fma9Zimr9w9-721rYNros6o,334
|
|
37
|
-
qcanvas/icons/light/tabs/pages.svg,sha256=Zgcsknpd4jiWuqRNYqFQvCAxgH4ThlSUl9rS-ZcrpL4,339
|
|
38
|
-
qcanvas/icons/light/tree_items/assignment.svg,sha256=ci5z-t0MAhTHYoMVXvIyHlZcd3MEYgeGMISxMSX0zes,502
|
|
39
|
-
qcanvas/icons/light/tree_items/mail.svg,sha256=l_ITAKZRkq7PbPw1-iY5fma9Zimr9w9-721rYNros6o,334
|
|
40
|
-
qcanvas/icons/light/tree_items/module.svg,sha256=P8N_7iH3tfHEyajMO2aQ-eKaB3mbNptREAzAic5P6Cg,902
|
|
41
|
-
qcanvas/icons/light/tree_items/page.svg,sha256=ui8UX_bPrOOnb9GlHujzopLO8yRRdpzp0nwmmELb214,356
|
|
42
|
-
qcanvas/icons/rc_icons.py,sha256=xJteGJsyG7o6XmRtFO4fItlzLy-PvQzwcn5MR-ZYLNA,72887
|
|
43
|
-
qcanvas/icons/universal/branding/main_icon.svg,sha256=st2sfA8HIETmoacJ2Oq84iJzfnNHH-T03ijB-J419_s,16104
|
|
44
|
-
qcanvas/icons/universal/downloads/download_failed.svg,sha256=lhDf8ul__T2ByRcd5KZicNtUVl4BdSqeZ3yOR6DvCLk,1091
|
|
45
|
-
qcanvas/icons/universal/downloads/downloaded.svg,sha256=WM5Kpi9IzLvDASOHQGQGtFb_m4u02mGHLLZNs19-4HA,1091
|
|
46
|
-
qcanvas/icons/universal/downloads/not_downloaded.svg,sha256=7zl_Gmx2IHZrugFYAUjBCSwmfXM0pvlshj8GhewxY5Q,1091
|
|
47
|
-
qcanvas/icons/universal/downloads/unknown.svg,sha256=9xlN244HJX3zM_MqdMTnNbKlqLjOFgCx3ZdM4Wc4zC0,1729
|
|
48
|
-
qcanvas/icons/universal/tabs/assignments_new_content.svg,sha256=IwnLpS31-eZS6ADEtpf1PFjr5Z6QoeGWElZEguaMmBM,502
|
|
49
|
-
qcanvas/icons/universal/tabs/mail_new_content.svg,sha256=q43Y6Xnq2BDFXPA88kJJl4KQbJw7jsm8q8A1NnVcRJ8,334
|
|
50
|
-
qcanvas/icons/universal/tabs/pages_new_content.svg,sha256=vUksdaa0bzEm6xvbp0sqQ_XJlqW87P-N-Btifstx7Tc,339
|
|
51
|
-
qcanvas/icons/universal/tree_items/semester.svg,sha256=9aWy2VH-PMhkMlhlq97Yh2pvW2xyYsdRh-5knUcgzfY,4088
|
|
52
|
-
qcanvas/run.py,sha256=tP5bplaPa_Z8DaKqP59bwYaIEccW5B18xoyXgKJsrf8,1681
|
|
53
|
-
qcanvas/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
54
|
-
qcanvas/ui/course_viewer/__init__.py,sha256=XkoFnh4ULw3_i-GDsOlueEWido0PkoDcN9_EX6-nkXY,76
|
|
55
|
-
qcanvas/ui/course_viewer/content_tree.py,sha256=Rjq7GNf-h9tb1gyUdRebh_VNxltLafjoy7oDhafAWDU,4631
|
|
56
|
-
qcanvas/ui/course_viewer/course_tree/__init__.py,sha256=N2XorJ4COFHzRYx53noANb4_qJYf6N8_YCjPdQuDCHs,36
|
|
57
|
-
qcanvas/ui/course_viewer/course_tree/_course_icon_generator.py,sha256=3r0pBRbb9LsD0VAXOj4VfD8IPyGmfXu-FJPnL3aHbRI,3071
|
|
58
|
-
qcanvas/ui/course_viewer/course_tree/course_tree.py,sha256=XR9IirTSQZsmmHeTojkZL29sSn6VBTut5e-01yLU_bo,3195
|
|
59
|
-
qcanvas/ui/course_viewer/course_viewer.py,sha256=P5GI4_xv8mFZ671hyY1zciMhRTE4HiWU2-1aLuLAik8,5339
|
|
60
|
-
qcanvas/ui/course_viewer/tabs/__init__.py,sha256=SlfWUzk6_E5uM9GIV-y9BVeKMwqn3pRx_xWhMyb1dfI,54
|
|
61
|
-
qcanvas/ui/course_viewer/tabs/assignment_tab/__init__.py,sha256=w936dW7za10Fh6rN0zVA-7Kyiup3kd6C-mPAFHtxmy0,42
|
|
62
|
-
qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tab.py,sha256=_de3IPBCe27Bt8MoabcX1ZchBbVb-_QHVeYMvL3wzr8,1986
|
|
63
|
-
qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tree.py,sha256=ipscHCgvDLL0kGnDelZ3UprPRIwHS3Ju9L4qR4UyyS0,2925
|
|
64
|
-
qcanvas/ui/course_viewer/tabs/content_tab.py,sha256=CAfzUYawDde0lhL7R7dFu07uS1XEG39VIleS2Cpu30g,3540
|
|
65
|
-
qcanvas/ui/course_viewer/tabs/file_tab/__init__.py,sha256=mMebnrNw_V-lQ-eBXS_kFinL-ZdUAXa459NmuyuCu6s,30
|
|
66
|
-
qcanvas/ui/course_viewer/tabs/file_tab/file_tab.py,sha256=DOpnSDg7vDRvLc4LFf94BHkx0cRy6InYLpKH7n_p4IU,1404
|
|
67
|
-
qcanvas/ui/course_viewer/tabs/file_tab/file_tree.py,sha256=HJ7KEk5QOI2B8orvPXL-d7oMI2ZSROO8v5Ccn4xNDJ8,3360
|
|
68
|
-
qcanvas/ui/course_viewer/tabs/file_tab/pages_file_tree.py,sha256=0XUydcBgeXmQp7cRjZ6YUS0k4HkekWRuxp8-VCRlNrc,1919
|
|
69
|
-
qcanvas/ui/course_viewer/tabs/mail_tab/__init__.py,sha256=68iRUUWEP7mudbaxa4ZBKMra4rvs2oZKaZkBWwmUrsI,30
|
|
70
|
-
qcanvas/ui/course_viewer/tabs/mail_tab/mail_tab.py,sha256=fw0FORJiH19rAGsjBFJHZlNrVCMbwG4n3AFV3wbhwGM,1840
|
|
71
|
-
qcanvas/ui/course_viewer/tabs/mail_tab/mail_tree.py,sha256=Z1eQSp1D_E78khGKf4qGlmo6AF_heWuz9zmgrv_VXik,1784
|
|
72
|
-
qcanvas/ui/course_viewer/tabs/page_tab/__init__.py,sha256=lcafxlSEVZ0wqZySxT6hTrvExX-GU2AfcZQbp6W8haU,30
|
|
73
|
-
qcanvas/ui/course_viewer/tabs/page_tab/page_tab.py,sha256=cv-pCDri7thRJZv-gWUZrL2FUQAHe7vZthRAhejsqWY,771
|
|
74
|
-
qcanvas/ui/course_viewer/tabs/page_tab/page_tree.py,sha256=AbN9U35PUSF0eO5SNexyzaLaCs2t_imkKOkwYsRtfyM,2179
|
|
75
|
-
qcanvas/ui/course_viewer/tabs/resource_rich_browser.py,sha256=_Q9xwUW0Mb8DqWUCAps2tHA5t4a22mEjuOOZNTdQSyM,7180
|
|
76
|
-
qcanvas/ui/course_viewer/tabs/util.py,sha256=Cg8FmPbkiTepV9IlTZQSWtcUaovv66iAD4_BUYJjIAY,344
|
|
77
|
-
qcanvas/ui/course_viewer/tree_widget_data_item.py,sha256=_j-j-jmi65-PucXhf3qqQp6jZ49q5PszuFwH1SndC18,566
|
|
78
|
-
qcanvas/ui/main_ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
79
|
-
qcanvas/ui/main_ui/course_viewer_container.py,sha256=814pP-HoALQdNE8L6XJ7WEmPcfmdRluz5Y-LqMJEUZQ,3447
|
|
80
|
-
qcanvas/ui/main_ui/options/__init__.py,sha256=SlfWUzk6_E5uM9GIV-y9BVeKMwqn3pRx_xWhMyb1dfI,54
|
|
81
|
-
qcanvas/ui/main_ui/options/auto_download_resources_option.py,sha256=n6OecWqCmyk4szHYVUkqTb9ADb4yQ0BKx50Xr7p_x4E,1361
|
|
82
|
-
qcanvas/ui/main_ui/options/quick_sync_option.py,sha256=qEfmtLllO32ejc-bydCvFRjal5RUlk2HtC5Ld4mT7ss,753
|
|
83
|
-
qcanvas/ui/main_ui/options/sync_on_start_option.py,sha256=zFFAAyGZEa6qBchJJIm7bJpOwxcntnto9Ee-lzCiHX4,731
|
|
84
|
-
qcanvas/ui/main_ui/options/theme_selection_menu.py,sha256=5DCCDBUiQHD_tC8e37kN6V7DElfhVGYChl5DgJd7cp4,1331
|
|
85
|
-
qcanvas/ui/main_ui/qcanvas_window.py,sha256=eVM4Y0q-enXS4NIooBQh1woVV5fOAJW5lYC8L1cxq3k,9013
|
|
86
|
-
qcanvas/ui/main_ui/status_bar_progress_display.py,sha256=vbuZwMR4It1qH8EY4ZiBz7akSDfaYZ_V18eS-pBgYq4,5047
|
|
87
|
-
qcanvas/ui/memory_tree/__init__.py,sha256=-XLitM6teC0zmwPrGf-Q-A53-zgmIPASExdOtaLIvPU,107
|
|
88
|
-
qcanvas/ui/memory_tree/_tree_memory.py,sha256=6d_-CpUC8u3s_LO100Gb-3DhoxwUDckgB56suOCyTZg,1893
|
|
89
|
-
qcanvas/ui/memory_tree/memory_tree_widget.py,sha256=Mq-zBNEwU-Npch-I5mhl_0tYAN7NvMN9GStajus3YWg,4408
|
|
90
|
-
qcanvas/ui/memory_tree/memory_tree_widget_item.py,sha256=JXk07AzrKsBnYAqhayIFYAwMfF_D_EfkfJY4Qyez47U,425
|
|
91
|
-
qcanvas/ui/setup/__init__.py,sha256=QWt2lEyLqWG5QC-BmCBlYyi0LZsBfsQYbP0XkvqA2f8,77
|
|
92
|
-
qcanvas/ui/setup/setup_checker.py,sha256=pRLZJR6ySa09DhMEt8F0VQ2D_r7IzrDJAULIatuokJw,449
|
|
93
|
-
qcanvas/ui/setup/setup_dialog.py,sha256=AbKtzHzdQkCHLksYedMWbAN2-r6jWm2R-1Vez0BGkKU,10281
|
|
94
|
-
qcanvas/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
95
|
-
qcanvas/util/auto_downloader.py,sha256=WGawgc849qpPf7ufe_yxRYhwVf2Aj15wTAAQvToxmHg,1842
|
|
96
|
-
qcanvas/util/basic_fonts.py,sha256=1NK5_kejgH45mENwiTWvE5oOuAvGqWMX3hg9tTUCBi4,243
|
|
97
|
-
qcanvas/util/file_icons.py,sha256=mJySt-RnlCYSn8pKdJtenB_oqRPJRbSOdvwC2u70LqI,1738
|
|
98
|
-
qcanvas/util/html_cleaner.py,sha256=U-UbZVX9x85gatOvxLsQXe2hL6x4I86eUKwkm0p159E,710
|
|
99
|
-
qcanvas/util/layouts.py,sha256=FN1DxKuAmI4P_RRO4Qo1-J1Y61hT7859OAkO-EpgrFU,1457
|
|
100
|
-
qcanvas/util/logs.py,sha256=VZKFITiW2WR2POEFVv5GRpEXic23Pzjehry-vH3g3Gk,138
|
|
101
|
-
qcanvas/util/paths.py,sha256=TzG5iy7A6ndzUdeV00lJKXq_gmbtooahueBjgvN02s8,989
|
|
102
|
-
qcanvas/util/qurl_util.py,sha256=NkskYvrMQJuYWMNF4DFQ4J5-YM5CGl5gHQKxJaAhHBE,197
|
|
103
|
-
qcanvas/util/runtime.py,sha256=EO1HFCN7dZbQtKHQOILuvjZFXGT7SzhlmPvU8ma95Z8,617
|
|
104
|
-
qcanvas/util/settings/__init__.py,sha256=ivc8bczhQdEJsWse6fc81Xyz0i2YX57pL4UubM3NJfw,228
|
|
105
|
-
qcanvas/util/settings/_client_settings.py,sha256=HyUpXoc7TinOviEd-eCo8g8Fbw8TqGAH2KfCkgPr9N0,1413
|
|
106
|
-
qcanvas/util/settings/_mapped_setting.py,sha256=Lb9mut_l5AM6a6jwfO9aZq1KEYZKa0qgOdAWwAJzX6Q,1973
|
|
107
|
-
qcanvas/util/settings/_ui_settings.py,sha256=zlWMjpntuqm7ZN3aBEROGrXc4bhtKOfWijmiGkdt1UA,804
|
|
108
|
-
qcanvas/util/themes/__init__.py,sha256=Ng-Rii7cFKrhSoE03J5tSYeaMY4UebFubKCBsWxouYM,134
|
|
109
|
-
qcanvas/util/themes/_colour_scheme_helper.py,sha256=QTrQ5c9AduBJMUuXp8sG-WPmYU82cF1tXjGDKhpI10w,1063
|
|
110
|
-
qcanvas/util/themes/_selected_theme.py,sha256=w1CXvMuLM8wKDgANOhcvNnlEXDyjdgnWO0TtA3vGomY,150
|
|
111
|
-
qcanvas/util/themes/_theme_changed_event.py,sha256=dIu1857h2ytSqmcRb2CABro3Gc0s9bm5DHdT23jyuk8,317
|
|
112
|
-
qcanvas/util/themes/_theme_changer.py,sha256=RA0b5Fur0LTlO-s1ZE4j2SedtbnWajEMw7m2HBdaDv0,2272
|
|
113
|
-
qcanvas/util/ui_tools.py,sha256=ogIHWutN7Yw_AgR5BEXDVXoo_ylN91SCXBdKUyWv-r8,1027
|
|
114
|
-
qcanvas/util/url_checker.py,sha256=gaV_KZZsG5bfJaGBv9jbHJjq0rVxIH55HRtucT6Qkx8,144
|
|
115
|
-
qcanvas-1.2.0.dist-info/METADATA,sha256=MBwhQpLuWA0_Nv0UD_7FXIvIRIdXbY5SwUo3UwtK-to,2071
|
|
116
|
-
qcanvas-1.2.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
117
|
-
qcanvas-1.2.0.dist-info/entry_points.txt,sha256=46VbnhQ9w2CYdfhYcPfWgjXYHjsKshu0asQ1B_sAMac,44
|
|
118
|
-
qcanvas-1.2.0.dist-info/RECORD,,
|
|
File without changes
|