qcanvas 1.0.11__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 +55 -6
- qcanvas/icons/_icon_type.py +42 -0
- qcanvas/icons/icons.qrc +48 -8
- qcanvas/icons/rc_icons.py +2477 -566
- qcanvas/settings/__init__.py +6 -0
- qcanvas/{util/settings → settings}/_client_settings.py +15 -6
- qcanvas/settings/_course_settings.py +54 -0
- qcanvas/{util/settings → settings}/_mapped_setting.py +8 -6
- qcanvas/{util/settings → settings}/_ui_settings.py +5 -5
- qcanvas/theme.py +101 -0
- qcanvas/ui/course_viewer/content_tree.py +37 -19
- qcanvas/ui/course_viewer/course_tree/__init__.py +1 -0
- qcanvas/ui/course_viewer/course_tree/_course_icon_generator.py +86 -0
- qcanvas/ui/course_viewer/{course_tree.py → course_tree/course_tree.py} +29 -14
- qcanvas/ui/course_viewer/course_viewer.py +79 -46
- qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tab.py +107 -29
- qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tree.py +19 -18
- qcanvas/ui/course_viewer/tabs/content_tab.py +33 -39
- qcanvas/ui/course_viewer/tabs/file_tab/__init__.py +1 -0
- qcanvas/ui/course_viewer/tabs/file_tab/file_tab.py +46 -0
- qcanvas/ui/course_viewer/tabs/file_tab/file_tree.py +96 -0
- qcanvas/ui/course_viewer/tabs/file_tab/pages_file_tree.py +55 -0
- qcanvas/ui/course_viewer/tabs/mail_tab/mail_tab.py +50 -27
- qcanvas/ui/course_viewer/tabs/mail_tab/mail_tree.py +18 -19
- qcanvas/ui/course_viewer/tabs/page_tab/page_tab.py +3 -3
- qcanvas/ui/course_viewer/tabs/page_tab/page_tree.py +18 -16
- qcanvas/ui/course_viewer/tabs/resource_rich_browser.py +61 -74
- qcanvas/ui/course_viewer/tree_widget_data_item.py +22 -0
- qcanvas/ui/memory_tree/_tree_memory.py +45 -41
- 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/qcanvas_window/course_viewer_container.py +95 -0
- qcanvas/ui/{main_ui → qcanvas_window}/options/auto_download_resources_option.py +8 -6
- 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 +12 -10
- qcanvas/ui/{main_ui → qcanvas_window}/qcanvas_window.py +74 -45
- qcanvas/ui/{main_ui → qcanvas_window}/status_bar_progress_display.py +20 -12
- 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 +3 -3
- qcanvas/ui/setup/setup_dialog.py +173 -80
- qcanvas/util/__init__.py +0 -2
- qcanvas/util/auto_downloader.py +9 -8
- qcanvas/util/basic_fonts.py +2 -2
- qcanvas/util/context_dict.py +12 -0
- qcanvas/util/file_icons.py +46 -0
- qcanvas/util/html_cleaner.py +2 -0
- qcanvas/util/layouts.py +9 -8
- qcanvas/util/paths.py +26 -22
- qcanvas/util/qurl_util.py +1 -1
- qcanvas/util/runtime.py +20 -0
- qcanvas/util/ui_tools.py +121 -7
- 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.0.11.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 -54
- qcanvas/icons/file-download-failed.svg +0 -6
- qcanvas/icons/file-downloaded.svg +0 -6
- qcanvas/icons/file-not-downloaded.svg +0 -6
- qcanvas/icons/file-unknown.svg +0 -6
- qcanvas/icons/main_icon.svg +0 -325
- qcanvas/icons/sync.svg +0 -7
- qcanvas/run.py +0 -30
- qcanvas/ui/main_ui/__init__.py +0 -0
- qcanvas/ui/main_ui/course_viewer_container.py +0 -52
- qcanvas/util/settings/__init__.py +0 -9
- qcanvas/util/themes.py +0 -24
- qcanvas-1.0.11.dist-info/METADATA +0 -61
- qcanvas-1.0.11.dist-info/RECORD +0 -68
- qcanvas-1.0.11.dist-info/entry_points.txt +0 -3
- /qcanvas/ui/course_viewer/tabs/{util.py → constants.py} +0 -0
- /qcanvas/ui/{main_ui → qcanvas_window}/options/__init__.py +0 -0
qcanvas/icons/main_icon.svg
DELETED
|
@@ -1,325 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
-
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
3
|
-
|
|
4
|
-
<svg
|
|
5
|
-
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
6
|
-
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
7
|
-
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
8
|
-
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
9
|
-
xmlns:cc="http://creativecommons.org/ns#"
|
|
10
|
-
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
11
|
-
inkscape:export-ydpi="90.000000"
|
|
12
|
-
inkscape:export-xdpi="90.000000"
|
|
13
|
-
width="256"
|
|
14
|
-
height="256"
|
|
15
|
-
id="svg11300"
|
|
16
|
-
sodipodi:version="0.32"
|
|
17
|
-
inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
|
|
18
|
-
sodipodi:docname="icon.svg"
|
|
19
|
-
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
|
20
|
-
version="1.0"
|
|
21
|
-
style="display:inline;enable-background:new"
|
|
22
|
-
inkscape:export-filename="/home/sam/moka-next-template.png"
|
|
23
|
-
xml:space="preserve"
|
|
24
|
-
xmlns="http://www.w3.org/2000/svg"><sodipodi:namedview
|
|
25
|
-
stroke="#ef2929"
|
|
26
|
-
fill="#f57900"
|
|
27
|
-
id="base"
|
|
28
|
-
pagecolor="#777777"
|
|
29
|
-
bordercolor="#666666"
|
|
30
|
-
borderopacity="0.25490196"
|
|
31
|
-
inkscape:pageopacity="0"
|
|
32
|
-
inkscape:pageshadow="2"
|
|
33
|
-
inkscape:zoom="2"
|
|
34
|
-
inkscape:cx="246.75"
|
|
35
|
-
inkscape:cy="112.75"
|
|
36
|
-
inkscape:current-layer="layer7"
|
|
37
|
-
showgrid="false"
|
|
38
|
-
inkscape:grid-bbox="true"
|
|
39
|
-
inkscape:document-units="px"
|
|
40
|
-
inkscape:showpageshadow="false"
|
|
41
|
-
inkscape:window-width="1920"
|
|
42
|
-
inkscape:window-height="1018"
|
|
43
|
-
inkscape:window-x="1920"
|
|
44
|
-
inkscape:window-y="0"
|
|
45
|
-
width="400px"
|
|
46
|
-
height="300px"
|
|
47
|
-
inkscape:snap-nodes="true"
|
|
48
|
-
inkscape:snap-bbox="true"
|
|
49
|
-
gridtolerance="10000"
|
|
50
|
-
inkscape:object-nodes="true"
|
|
51
|
-
inkscape:snap-grids="true"
|
|
52
|
-
showguides="true"
|
|
53
|
-
inkscape:guide-bbox="true"
|
|
54
|
-
inkscape:window-maximized="1"
|
|
55
|
-
inkscape:bbox-nodes="true"
|
|
56
|
-
inkscape:bbox-paths="true"
|
|
57
|
-
inkscape:snap-bbox-edge-midpoints="true"
|
|
58
|
-
inkscape:snap-bbox-midpoints="true"
|
|
59
|
-
inkscape:pagecheckerboard="0"
|
|
60
|
-
inkscape:deskcolor="#d1d1d1"><inkscape:grid
|
|
61
|
-
spacingy="1px"
|
|
62
|
-
spacingx="1px"
|
|
63
|
-
id="grid5883"
|
|
64
|
-
type="xygrid"
|
|
65
|
-
enabled="true"
|
|
66
|
-
visible="false"
|
|
67
|
-
empspacing="4"
|
|
68
|
-
snapvisiblegridlinesonly="true"
|
|
69
|
-
dotted="false"
|
|
70
|
-
color="#000000"
|
|
71
|
-
opacity="0.12549"
|
|
72
|
-
empcolor="#203ef3"
|
|
73
|
-
empopacity="0.36470588"
|
|
74
|
-
originx="-16"
|
|
75
|
-
originy="-28"
|
|
76
|
-
units="px" /><inkscape:grid
|
|
77
|
-
type="xygrid"
|
|
78
|
-
id="grid11592"
|
|
79
|
-
empspacing="8"
|
|
80
|
-
visible="false"
|
|
81
|
-
enabled="false"
|
|
82
|
-
spacingx="0.5px"
|
|
83
|
-
spacingy="0.5px"
|
|
84
|
-
color="#ff0000"
|
|
85
|
-
opacity="0.12549"
|
|
86
|
-
empcolor="#ff0000"
|
|
87
|
-
empopacity="0.25098039"
|
|
88
|
-
snapvisiblegridlinesonly="true"
|
|
89
|
-
dotted="true"
|
|
90
|
-
originx="-16"
|
|
91
|
-
originy="-28"
|
|
92
|
-
units="px"/></sodipodi:namedview>
|
|
93
|
-
<defs
|
|
94
|
-
id="defs3"><linearGradient
|
|
95
|
-
inkscape:collect="always"
|
|
96
|
-
xlink:href="#outerBackgroundGradient-2"
|
|
97
|
-
id="linearGradient4254"
|
|
98
|
-
x1="35"
|
|
99
|
-
y1="156"
|
|
100
|
-
x2="253"
|
|
101
|
-
y2="156"
|
|
102
|
-
gradientUnits="userSpaceOnUse"
|
|
103
|
-
gradientTransform="rotate(-90,144,156)" />
|
|
104
|
-
<linearGradient
|
|
105
|
-
id="outerBackgroundGradient-2"><stop
|
|
106
|
-
style="stop-color:#e70a0a;stop-opacity:1;"
|
|
107
|
-
offset="0"
|
|
108
|
-
id="stop3864-8-6-00" />
|
|
109
|
-
<stop
|
|
110
|
-
style="stop-color:#fe0000;stop-opacity:1;"
|
|
111
|
-
offset="1"
|
|
112
|
-
id="stop3866-9-1-1"/></linearGradient>
|
|
113
|
-
<style
|
|
114
|
-
id="style1">.cls-1{fill:#fff;}</style></defs>
|
|
115
|
-
<metadata
|
|
116
|
-
id="metadata4"><rdf:RDF><cc:Work
|
|
117
|
-
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
|
118
|
-
rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:creator><cc:Agent><dc:title>Sam Hewitt</dc:title></cc:Agent></dc:creator><dc:source/><cc:license
|
|
119
|
-
rdf:resource=""/><dc:title/><dc:subject><rdf:Bag /></dc:subject><dc:date/><dc:rights><cc:Agent><dc:title /></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title /></cc:Agent></dc:publisher><dc:identifier/><dc:relation/><dc:language/><dc:coverage/><dc:description/><dc:contributor><cc:Agent><dc:title /></cc:Agent></dc:contributor></cc:Work><cc:Work
|
|
120
|
-
rdf:about=""><dc:format>image/svg+xml</dc:format>
|
|
121
|
-
<dc:type
|
|
122
|
-
rdf:resource="http://purl.org/dc/dcmitype/StillImage"/></cc:Work></rdf:RDF></metadata>
|
|
123
|
-
<g
|
|
124
|
-
style="display:inline"
|
|
125
|
-
inkscape:groupmode="layer"
|
|
126
|
-
inkscape:label="Icon"
|
|
127
|
-
id="layer1"
|
|
128
|
-
transform="translate(-16,-28)"><g
|
|
129
|
-
style="display:none"
|
|
130
|
-
inkscape:label="Baseplate"
|
|
131
|
-
id="layer7"
|
|
132
|
-
inkscape:groupmode="layer"><text
|
|
133
|
-
y="19.745117"
|
|
134
|
-
xml:space="preserve"
|
|
135
|
-
x="15.006836"
|
|
136
|
-
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';display:inline;fill:#000000;fill-opacity:1;stroke:none;enable-background:new"
|
|
137
|
-
inkscape:label="context"
|
|
138
|
-
id="context"><tspan
|
|
139
|
-
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans'"
|
|
140
|
-
y="19.745117"
|
|
141
|
-
x="15.006836"
|
|
142
|
-
sodipodi:role="line"
|
|
143
|
-
id="tspan3933">apps</tspan></text><text
|
|
144
|
-
y="19.745117"
|
|
145
|
-
xml:space="preserve"
|
|
146
|
-
x="122.48828"
|
|
147
|
-
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;enable-background:new"
|
|
148
|
-
inkscape:label="icon-name"
|
|
149
|
-
id="icon-name"><tspan
|
|
150
|
-
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:18px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold'"
|
|
151
|
-
y="19.745117"
|
|
152
|
-
x="122.48828"
|
|
153
|
-
sodipodi:role="line"
|
|
154
|
-
id="tspan3937">amd</tspan></text><rect
|
|
155
|
-
style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"
|
|
156
|
-
id="rect16x16"
|
|
157
|
-
width="16"
|
|
158
|
-
height="16"
|
|
159
|
-
x="416"
|
|
160
|
-
y="140"
|
|
161
|
-
inkscape:label="16x16"/><rect
|
|
162
|
-
style="display:inline;overflow:visible;visibility:visible;fill:#d4d4d4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"
|
|
163
|
-
id="rect24x24"
|
|
164
|
-
width="24"
|
|
165
|
-
height="24"
|
|
166
|
-
x="416"
|
|
167
|
-
y="100"
|
|
168
|
-
inkscape:label="24x24"/><rect
|
|
169
|
-
style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"
|
|
170
|
-
id="rect32x32"
|
|
171
|
-
width="32"
|
|
172
|
-
height="32"
|
|
173
|
-
x="416"
|
|
174
|
-
y="52"
|
|
175
|
-
inkscape:label="32x32"/><rect
|
|
176
|
-
inkscape:label="22x22"
|
|
177
|
-
y="101"
|
|
178
|
-
x="417"
|
|
179
|
-
height="22"
|
|
180
|
-
width="22"
|
|
181
|
-
id="rect22x22"
|
|
182
|
-
style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"/><rect
|
|
183
|
-
inkscape:label="48x48"
|
|
184
|
-
y="220"
|
|
185
|
-
x="288"
|
|
186
|
-
height="48"
|
|
187
|
-
width="48"
|
|
188
|
-
id="rect48x48"
|
|
189
|
-
style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"/><rect
|
|
190
|
-
style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"
|
|
191
|
-
id="rect256x256"
|
|
192
|
-
width="256"
|
|
193
|
-
height="256"
|
|
194
|
-
x="16"
|
|
195
|
-
y="28"
|
|
196
|
-
inkscape:label="256x256"/><rect
|
|
197
|
-
style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"
|
|
198
|
-
id="rect64x64"
|
|
199
|
-
width="64"
|
|
200
|
-
height="64"
|
|
201
|
-
x="288"
|
|
202
|
-
y="140"
|
|
203
|
-
inkscape:label="64x64"/><rect
|
|
204
|
-
style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"
|
|
205
|
-
id="rect96x96"
|
|
206
|
-
width="96"
|
|
207
|
-
height="96"
|
|
208
|
-
x="288"
|
|
209
|
-
y="28"
|
|
210
|
-
inkscape:label="96x96"/><rect
|
|
211
|
-
style="display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"
|
|
212
|
-
id="rect256x256-7"
|
|
213
|
-
width="256"
|
|
214
|
-
height="256"
|
|
215
|
-
x="16"
|
|
216
|
-
y="28"
|
|
217
|
-
inkscape:label="256x256"/></g>
|
|
218
|
-
<g
|
|
219
|
-
inkscape:groupmode="layer"
|
|
220
|
-
id="layer4"
|
|
221
|
-
inkscape:label="Shadow"
|
|
222
|
-
style="display:inline"
|
|
223
|
-
sodipodi:insensitive="true"><rect
|
|
224
|
-
ry="50"
|
|
225
|
-
y="47"
|
|
226
|
-
x="34"
|
|
227
|
-
height="220"
|
|
228
|
-
width="220"
|
|
229
|
-
id="rect4114"
|
|
230
|
-
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;marker:none;enable-background:accumulate" /></g>
|
|
231
|
-
<g
|
|
232
|
-
inkscape:groupmode="layer"
|
|
233
|
-
id="layer2"
|
|
234
|
-
inkscape:label="Background"
|
|
235
|
-
style="display:inline"><path
|
|
236
|
-
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient4254);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate"
|
|
237
|
-
d="M 84,46.5 C 56.568735,46.5 34.5,68.568732 34.5,96 v 120 c 0,27.43127 22.068735,49.5 49.5,49.5 h 120 c 27.43127,0 49.5,-22.06873 49.5,-49.5 V 96 C 253.5,68.568732 231.43127,46.5 204,46.5 Z"
|
|
238
|
-
id="path4200" /></g>
|
|
239
|
-
<g
|
|
240
|
-
inkscape:groupmode="layer"
|
|
241
|
-
id="layer6"
|
|
242
|
-
inkscape:label="Symbols"
|
|
243
|
-
style="display:inline"><g
|
|
244
|
-
id="Layer_1-2"
|
|
245
|
-
data-name="Layer 1"
|
|
246
|
-
transform="matrix(1.322302,0,0,1.322302,59.921425,71.894979)"><path
|
|
247
|
-
class="cls-1"
|
|
248
|
-
d="M 18.45,63.47 A 18.4,18.4 0 0 0 2.31,45.23 73.13,73.13 0 0 0 2.31,81.7 18.38,18.38 0 0 0 18.45,63.47"
|
|
249
|
-
id="path1" /><path
|
|
250
|
-
class="cls-1"
|
|
251
|
-
d="M 29.13,57.7 A 5.77,5.77 0 1 0 34.9,63.47 5.77,5.77 0 0 0 29.13,57.7"
|
|
252
|
-
id="path2"/><path
|
|
253
|
-
class="cls-1"
|
|
254
|
-
d="m 108.72,63.47 a 18.38,18.38 0 0 0 16.14,18.23 73.13,73.13 0 0 0 0,-36.47 18.4,18.4 0 0 0 -16.14,18.24"
|
|
255
|
-
id="path3"/><path
|
|
256
|
-
class="cls-1"
|
|
257
|
-
d="m 98,57.7 a 5.77,5.77 0 1 0 5.76,5.77 A 5.77,5.77 0 0 0 98,57.7"
|
|
258
|
-
id="path4"/><path
|
|
259
|
-
class="cls-1"
|
|
260
|
-
d="m 63.46,108.77 a 18.39,18.39 0 0 0 -18.23,16.13 73.13,73.13 0 0 0 36.47,0 18.38,18.38 0 0 0 -18.24,-16.13"
|
|
261
|
-
id="path5"/><path
|
|
262
|
-
class="cls-1"
|
|
263
|
-
d="m 63.47,92.31 a 5.77,5.77 0 1 0 5.76,5.77 5.77,5.77 0 0 0 -5.76,-5.77"
|
|
264
|
-
id="path6"/><path
|
|
265
|
-
class="cls-1"
|
|
266
|
-
d="M 63.47,18.44 A 18.37,18.37 0 0 0 81.7,2.31 a 73.13,73.13 0 0 0 -36.47,0 18.39,18.39 0 0 0 18.24,16.13"
|
|
267
|
-
id="path7"/><path
|
|
268
|
-
class="cls-1"
|
|
269
|
-
d="m 63.47,23.37 a 5.77,5.77 0 1 0 5.76,5.76 5.76,5.76 0 0 0 -5.76,-5.76"
|
|
270
|
-
id="path8"/><path
|
|
271
|
-
class="cls-1"
|
|
272
|
-
d="m 95.44,95.44 a 18.4,18.4 0 0 0 -1.5,24.29 73,73 0 0 0 25.78,-25.79 18.39,18.39 0 0 0 -24.28,1.5"
|
|
273
|
-
id="path9"/><path
|
|
274
|
-
class="cls-1"
|
|
275
|
-
d="m 83.8,83.8 a 5.77,5.77 0 1 0 8.16,0 5.78,5.78 0 0 0 -8.16,0"
|
|
276
|
-
id="path10"/><path
|
|
277
|
-
class="cls-1"
|
|
278
|
-
d="M 31.59,31.59 A 18.36,18.36 0 0 0 33.09,7.31 72.93,72.93 0 0 0 7.31,33.09 18.36,18.36 0 0 0 31.59,31.59"
|
|
279
|
-
id="path11"/><path
|
|
280
|
-
class="cls-1"
|
|
281
|
-
d="m 35.07,35.08 a 5.77,5.77 0 1 0 8.16,0 5.78,5.78 0 0 0 -8.16,0"
|
|
282
|
-
id="path12"/><path
|
|
283
|
-
class="cls-1"
|
|
284
|
-
d="M 95.4,31.53 A 18.39,18.39 0 0 0 119.69,33 72.88,72.88 0 0 0 93.9,7.25 18.39,18.39 0 0 0 95.4,31.53"
|
|
285
|
-
id="path13"/><path
|
|
286
|
-
class="cls-1"
|
|
287
|
-
d="m 91.92,43.17 a 5.76,5.76 0 1 0 -8.15,0 5.76,5.76 0 0 0 8.15,0"
|
|
288
|
-
id="path14"/><path
|
|
289
|
-
class="cls-1"
|
|
290
|
-
d="M 31.56,95.37 A 18.39,18.39 0 0 0 7.28,93.87 73,73 0 0 0 33.06,119.66 18.38,18.38 0 0 0 31.56,95.37"
|
|
291
|
-
id="path15"/><path
|
|
292
|
-
class="cls-1"
|
|
293
|
-
d="m 35,83.73 a 5.77,5.77 0 1 0 8.16,0 5.79,5.79 0 0 0 -8.16,0"
|
|
294
|
-
id="path16"/></g></g>
|
|
295
|
-
<g
|
|
296
|
-
inkscape:groupmode="layer"
|
|
297
|
-
id="layer5"
|
|
298
|
-
inkscape:label="Highlights"
|
|
299
|
-
style="display:inline"
|
|
300
|
-
sodipodi:insensitive="true"><path
|
|
301
|
-
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.13;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;marker:none;enable-background:accumulate"
|
|
302
|
-
d="M 84,47 C 56.836703,47 35,68.836703 35,96 v 1 C 35,69.836703 56.836703,48 84,48 h 120 c 27.1633,0 49,21.836703 49,49 V 96 C 253,68.836703 231.1633,47 204,47 Z"
|
|
303
|
-
id="rect3894"
|
|
304
|
-
inkscape:connector-curvature="0" />
|
|
305
|
-
<path
|
|
306
|
-
id="path4085"
|
|
307
|
-
d="m 204,266 c 27.1633,0 49,-21.8367 49,-49 v -1 c 0,27.1633 -21.8367,49 -49,49 H 84 C 56.8367,265 35,243.1633 35,216 v 1 c 0,27.1633 21.8367,49 49,49 z"
|
|
308
|
-
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.41;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;marker:none;enable-background:accumulate"
|
|
309
|
-
inkscape:connector-curvature="0"/>
|
|
310
|
-
<path
|
|
311
|
-
inkscape:connector-curvature="0"
|
|
312
|
-
id="path4280"
|
|
313
|
-
d="M 84,265 C 56.836703,265 35,243.1633 35,216 v -1 c 0,27.1633 21.836703,49 49,49 h 120 c 27.1633,0 49,-21.8367 49,-49 v 1 c 0,27.1633 -21.8367,49 -49,49 z"
|
|
314
|
-
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;marker:none;enable-background:accumulate"
|
|
315
|
-
inkscape:label="path4280"/></g>
|
|
316
|
-
<g
|
|
317
|
-
inkscape:groupmode="layer"
|
|
318
|
-
id="layer3"
|
|
319
|
-
inkscape:label="Border"
|
|
320
|
-
style="display:inline"
|
|
321
|
-
sodipodi:insensitive="true"><path
|
|
322
|
-
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.41;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;marker:none;enable-background:accumulate"
|
|
323
|
-
d="M 84,46 C 56.3,46 34,68.3 34,96 v 120 c 0,27.7 22.3,50 50,50 h 120 c 27.7,0 50,-22.3 50,-50 V 96 C 254,68.3 231.7,46 204,46 Z m 0,1 h 120 c 27.1633,0 49,21.836703 49,49 v 120 c 0,27.1633 -21.8367,49 -49,49 H 84 C 56.836703,265 35,243.1633 35,216 V 96 C 35,68.836703 56.836703,47 84,47 Z"
|
|
324
|
-
id="rect4040"
|
|
325
|
-
inkscape:connector-curvature="0" /></g></g></svg>
|
qcanvas/icons/sync.svg
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
|
2
|
-
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
-
<path d="M18.43 4.25C18.2319 4.25259 18.0426 4.33244 17.9025 4.47253C17.7625 4.61263 17.6826 4.80189 17.68 5V7.43L16.84 6.59C15.971 5.71363 14.8924 5.07396 13.7067 4.73172C12.5209 4.38948 11.2673 4.35604 10.065 4.63458C8.86267 4.91312 7.7515 5.49439 6.83703 6.32318C5.92255 7.15198 5.23512 8.20078 4.84001 9.37C4.79887 9.46531 4.77824 9.56821 4.77947 9.67202C4.7807 9.77583 4.80375 9.87821 4.84714 9.97252C4.89052 10.0668 4.95326 10.151 5.03129 10.2194C5.10931 10.2879 5.20087 10.3392 5.30001 10.37C5.38273 10.3844 5.4673 10.3844 5.55001 10.37C5.70646 10.3684 5.85861 10.3186 5.98568 10.2273C6.11275 10.136 6.20856 10.0078 6.26001 9.86C6.53938 9.0301 7.00847 8.27681 7.63001 7.66C8.70957 6.58464 10.1713 5.98085 11.695 5.98085C13.2188 5.98085 14.6805 6.58464 15.76 7.66L16.6 8.5H14.19C13.9911 8.5 13.8003 8.57902 13.6597 8.71967C13.519 8.86032 13.44 9.05109 13.44 9.25C13.44 9.44891 13.519 9.63968 13.6597 9.78033C13.8003 9.92098 13.9911 10 14.19 10H18.43C18.5289 10.0013 18.627 9.98286 18.7186 9.94565C18.8102 9.90844 18.8934 9.85324 18.9633 9.78333C19.0333 9.71341 19.0885 9.6302 19.1257 9.5386C19.1629 9.44699 19.1814 9.34886 19.18 9.25V5C19.18 4.80109 19.101 4.61032 18.9603 4.46967C18.8197 4.32902 18.6289 4.25 18.43 4.25Z"
|
|
4
|
-
fill="#000000"/>
|
|
5
|
-
<path d="M18.68 13.68C18.5837 13.6422 18.4808 13.6244 18.3774 13.6277C18.274 13.6311 18.1724 13.6555 18.0787 13.6995C17.9851 13.7435 17.9015 13.8062 17.8329 13.8836C17.7643 13.9611 17.7123 14.0517 17.68 14.15C17.4006 14.9799 16.9316 15.7332 16.31 16.35C15.2305 17.4254 13.7688 18.0291 12.245 18.0291C10.7213 18.0291 9.25957 17.4254 8.18001 16.35L7.34001 15.51H9.81002C10.0089 15.51 10.1997 15.431 10.3403 15.2903C10.481 15.1497 10.56 14.9589 10.56 14.76C10.56 14.5611 10.481 14.3703 10.3403 14.2297C10.1997 14.089 10.0089 14.01 9.81002 14.01H5.57001C5.47115 14.0086 5.37302 14.0271 5.28142 14.0643C5.18982 14.1016 5.1066 14.1568 5.03669 14.2267C4.96677 14.2966 4.91158 14.3798 4.87436 14.4714C4.83715 14.563 4.81867 14.6611 4.82001 14.76V19C4.82001 19.1989 4.89903 19.3897 5.03968 19.5303C5.18034 19.671 5.3711 19.75 5.57001 19.75C5.76893 19.75 5.95969 19.671 6.10034 19.5303C6.241 19.3897 6.32001 19.1989 6.32001 19V16.57L7.16001 17.41C8.02901 18.2864 9.10761 18.926 10.2934 19.2683C11.4791 19.6105 12.7327 19.6439 13.935 19.3654C15.1374 19.0869 16.2485 18.5056 17.163 17.6768C18.0775 16.848 18.7649 15.7992 19.16 14.63C19.1926 14.5362 19.2061 14.4368 19.1995 14.3377C19.1929 14.2386 19.1664 14.1418 19.1216 14.0532C19.0768 13.9645 19.0146 13.8858 18.9387 13.8217C18.8629 13.7576 18.7749 13.7094 18.68 13.68Z"
|
|
6
|
-
fill="#000000"/>
|
|
7
|
-
</svg>
|
qcanvas/run.py
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
from logging import INFO, WARNING
|
|
3
|
-
|
|
4
|
-
import qcanvas.app_start
|
|
5
|
-
from qcanvas.util import logs, paths
|
|
6
|
-
|
|
7
|
-
paths.data_storage().mkdir(parents=True, exist_ok=True)
|
|
8
|
-
|
|
9
|
-
logging.basicConfig(
|
|
10
|
-
filemode="w",
|
|
11
|
-
filename=paths.data_storage() / "debug.log",
|
|
12
|
-
level="WARN",
|
|
13
|
-
)
|
|
14
|
-
|
|
15
|
-
logs.set_levels(
|
|
16
|
-
{
|
|
17
|
-
"qcanvas": INFO,
|
|
18
|
-
"qcanvas.ui": WARNING,
|
|
19
|
-
"qcanvas_backend": INFO,
|
|
20
|
-
"qcanvas.ui.main_ui.status_bar_progress_display": INFO,
|
|
21
|
-
}
|
|
22
|
-
)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def main():
|
|
26
|
-
qcanvas.app_start.launch()
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if __name__ == "__main__":
|
|
30
|
-
main()
|
qcanvas/ui/main_ui/__init__.py
DELETED
|
File without changes
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
from typing import *
|
|
3
|
-
|
|
4
|
-
import qcanvas_backend.database.types as db
|
|
5
|
-
from qcanvas_backend.net.resources.download.resource_manager import ResourceManager
|
|
6
|
-
from qcanvas_backend.net.sync.sync_receipt import SyncReceipt, empty_receipt
|
|
7
|
-
from qtpy.QtCore import Qt
|
|
8
|
-
from qtpy.QtWidgets import *
|
|
9
|
-
|
|
10
|
-
from qcanvas.ui.course_viewer.course_viewer import CourseViewer
|
|
11
|
-
|
|
12
|
-
_logger = logging.getLogger(__name__)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class CourseViewerContainer(QStackedWidget):
|
|
16
|
-
def __init__(self, downloader: ResourceManager):
|
|
17
|
-
super().__init__()
|
|
18
|
-
self._course_viewers: dict[str, CourseViewer] = {}
|
|
19
|
-
self._downloader = downloader
|
|
20
|
-
self._last_course_id: Optional[str] = None
|
|
21
|
-
self._last_sync_receipt: SyncReceipt = empty_receipt()
|
|
22
|
-
self._placeholder = QLabel("No Course Selected")
|
|
23
|
-
self._placeholder.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
|
24
|
-
self.addWidget(self._placeholder)
|
|
25
|
-
|
|
26
|
-
def show_blank(self) -> None:
|
|
27
|
-
self._last_course_id = None
|
|
28
|
-
self.setCurrentWidget(self._placeholder)
|
|
29
|
-
|
|
30
|
-
def load_course(self, course: db.Course) -> None:
|
|
31
|
-
if course.id not in self._course_viewers:
|
|
32
|
-
viewer = CourseViewer(
|
|
33
|
-
course=course,
|
|
34
|
-
downloader=self._downloader,
|
|
35
|
-
sync_receipt=self._last_sync_receipt,
|
|
36
|
-
)
|
|
37
|
-
self._course_viewers[course.id] = viewer
|
|
38
|
-
self.addWidget(viewer)
|
|
39
|
-
else:
|
|
40
|
-
viewer = self._course_viewers[course.id]
|
|
41
|
-
|
|
42
|
-
self.setCurrentWidget(viewer)
|
|
43
|
-
self._last_course_id = course.id
|
|
44
|
-
|
|
45
|
-
async def reload_all(
|
|
46
|
-
self, courses: Sequence[db.Course], *, sync_receipt: SyncReceipt
|
|
47
|
-
) -> None:
|
|
48
|
-
self._last_sync_receipt = sync_receipt
|
|
49
|
-
for course in courses:
|
|
50
|
-
if course.id in self._course_viewers:
|
|
51
|
-
viewer = self._course_viewers[course.id]
|
|
52
|
-
viewer.reload(course, sync_receipt=sync_receipt)
|
qcanvas/util/themes.py
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
|
|
3
|
-
import qdarktheme
|
|
4
|
-
|
|
5
|
-
_logger = logging.getLogger(__name__)
|
|
6
|
-
|
|
7
|
-
default_theme = "auto"
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def ensure_theme_is_valid(theme: str) -> str:
|
|
11
|
-
if theme not in ["auto", "light", "dark", "native"]:
|
|
12
|
-
return default_theme
|
|
13
|
-
else:
|
|
14
|
-
return theme
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
def apply(theme: str) -> None:
|
|
18
|
-
theme = ensure_theme_is_valid(theme)
|
|
19
|
-
|
|
20
|
-
if theme != "native":
|
|
21
|
-
qdarktheme.setup_theme(
|
|
22
|
-
theme,
|
|
23
|
-
custom_colors={"primary": "e02424"},
|
|
24
|
-
)
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: qcanvas
|
|
3
|
-
Version: 1.0.11
|
|
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,<3.13
|
|
8
|
-
Classifier: Programming Language :: Python :: 3
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
10
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
11
|
-
Requires-Dist: aiosqlite (>=0.20.0,<0.21.0)
|
|
12
|
-
Requires-Dist: asynctaskpool (>=0.2.1,<0.3.0)
|
|
13
|
-
Requires-Dist: lightdb (>=2.0,<3.0)
|
|
14
|
-
Requires-Dist: platformdirs (>=4.2.2,<5.0.0)
|
|
15
|
-
Requires-Dist: pyqtdarktheme-fork (>=2.3.2,<3.0.0)
|
|
16
|
-
Requires-Dist: qasync (>=0.27.1,<0.28.0)
|
|
17
|
-
Requires-Dist: qcanvas-api-clients (>=0.2.2,<0.3.0)
|
|
18
|
-
Requires-Dist: qcanvas-backend (==0.1.10)
|
|
19
|
-
Requires-Dist: qtpy (>=2.4.1,<3.0.0)
|
|
20
|
-
Requires-Dist: sqlalchemy (>=2.0.31,<3.0.0)
|
|
21
|
-
Requires-Dist: validators (>=0.33.0,<0.34.0)
|
|
22
|
-
Description-Content-Type: text/markdown
|
|
23
|
-
|
|
24
|
-
# QCanvas
|
|
25
|
-
|
|
26
|
-
QCanvas is an **unofficial** desktop client for Canvas LMS.
|
|
27
|
-
|
|
28
|
-
# Downloads
|
|
29
|
-
|
|
30
|
-
Download it from [releases](https://github.com/QCanvas/QCanvasApp/releases)
|
|
31
|
-
|
|
32
|
-
# Development/Run from source
|
|
33
|
-
|
|
34
|
-
## Prerequisites
|
|
35
|
-
|
|
36
|
-
- Python 3.12+ (use [pyenv](https://github.com/pyenv/pyenv) if your distro does not have that version)
|
|
37
|
-
- [Pipx](https://pipx.pypa.io/stable/) (optional)
|
|
38
|
-
- Poetry (recommended to install using `pipx install poetry`)
|
|
39
|
-
- [Appimagetool](https://github.com/AppImage/appimagetool) (Only for building the appimage)
|
|
40
|
-
|
|
41
|
-
## Get started
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
git clone https://github.com/QCanvas/QCanvasApp.git
|
|
45
|
-
cd QCanvasApp
|
|
46
|
-
|
|
47
|
-
# Enter shell and run it
|
|
48
|
-
poetry shell
|
|
49
|
-
poetry install
|
|
50
|
-
python qcanvas/run.py
|
|
51
|
-
|
|
52
|
-
# Alternatively you can run it like this:
|
|
53
|
-
poetry install
|
|
54
|
-
poetry run python qcanvas/run.py
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
## Build custom AppImage
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
bash build_appimage.sh
|
|
61
|
-
```
|
qcanvas-1.0.11.dist-info/RECORD
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
qcanvas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
qcanvas/app_start/__init__.py,sha256=Qq_8Zgqhkd_lHLOvUH6NP95-WofxyC0R_vgZx2hQF7g,1274
|
|
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=eaZWyt-xEsLqRVI2HNvevgRhXUnM_oyDrT5hSyLM1eE,246
|
|
7
|
-
qcanvas/icons/file-download-failed.svg,sha256=b1Nx5mW_dbh3nuex4e-11btcGILLg59PHUG5lV6bc2U,1327
|
|
8
|
-
qcanvas/icons/file-downloaded.svg,sha256=ymf1NU5uvKZq41kNVTtKkUoIzUE3pbHmx5IvwPYoyiU,789
|
|
9
|
-
qcanvas/icons/file-not-downloaded.svg,sha256=TVpIZYDUfOw3S0cmXR3FawiCp0Y_PTSR4XKwrsy1qOs,1270
|
|
10
|
-
qcanvas/icons/file-unknown.svg,sha256=9xlN244HJX3zM_MqdMTnNbKlqLjOFgCx3ZdM4Wc4zC0,1729
|
|
11
|
-
qcanvas/icons/icons.qrc,sha256=czwaoP0TNXGoH91cstRbdhvKnfyLlmAp-VmaZoBk0YY,280
|
|
12
|
-
qcanvas/icons/main_icon.svg,sha256=st2sfA8HIETmoacJ2Oq84iJzfnNHH-T03ijB-J419_s,16104
|
|
13
|
-
qcanvas/icons/rc_icons.py,sha256=Ankeu0oWJk-1qLGVLxmiK5Kt1LVNyDmpR8jJZzOG5gQ,18194
|
|
14
|
-
qcanvas/icons/sync.svg,sha256=J-7_KnFbQL3uh-RrTy0_wSJUVW4Cc6ZSTacld6ULv1w,2829
|
|
15
|
-
qcanvas/run.py,sha256=lZZPpdlQWbcSJnhY2i2zJ1xizhdy1j2EoV1BUYVXkfw,548
|
|
16
|
-
qcanvas/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
|
-
qcanvas/ui/course_viewer/__init__.py,sha256=XkoFnh4ULw3_i-GDsOlueEWido0PkoDcN9_EX6-nkXY,76
|
|
18
|
-
qcanvas/ui/course_viewer/content_tree.py,sha256=sxYcNzyVUbZe-Nmoz7FXvmb9J6bNwqi8G7xZOtVqKhQ,3993
|
|
19
|
-
qcanvas/ui/course_viewer/course_tree.py,sha256=LkzquiAIKzFwB9dkOx-QmIp7CkKJ8R5Kk0aeYHQLu5s,2709
|
|
20
|
-
qcanvas/ui/course_viewer/course_viewer.py,sha256=X-bughys3-6MmrRb7-9vVgRixDZbzKBj66AeabJzmDo,3970
|
|
21
|
-
qcanvas/ui/course_viewer/tabs/__init__.py,sha256=SlfWUzk6_E5uM9GIV-y9BVeKMwqn3pRx_xWhMyb1dfI,54
|
|
22
|
-
qcanvas/ui/course_viewer/tabs/assignment_tab/__init__.py,sha256=w936dW7za10Fh6rN0zVA-7Kyiup3kd6C-mPAFHtxmy0,42
|
|
23
|
-
qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tab.py,sha256=_de3IPBCe27Bt8MoabcX1ZchBbVb-_QHVeYMvL3wzr8,1986
|
|
24
|
-
qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tree.py,sha256=sy9Cu5ZMt_Jb6PK-ikyB8CvSvdGecsK_8sPpKigTlfo,2924
|
|
25
|
-
qcanvas/ui/course_viewer/tabs/content_tab.py,sha256=CAfzUYawDde0lhL7R7dFu07uS1XEG39VIleS2Cpu30g,3540
|
|
26
|
-
qcanvas/ui/course_viewer/tabs/mail_tab/__init__.py,sha256=68iRUUWEP7mudbaxa4ZBKMra4rvs2oZKaZkBWwmUrsI,30
|
|
27
|
-
qcanvas/ui/course_viewer/tabs/mail_tab/mail_tab.py,sha256=fw0FORJiH19rAGsjBFJHZlNrVCMbwG4n3AFV3wbhwGM,1840
|
|
28
|
-
qcanvas/ui/course_viewer/tabs/mail_tab/mail_tree.py,sha256=5yCLjkwFV1qIOq-NYeUds_gz_gi-yy0OXblNXt_zzVQ,1799
|
|
29
|
-
qcanvas/ui/course_viewer/tabs/page_tab/__init__.py,sha256=lcafxlSEVZ0wqZySxT6hTrvExX-GU2AfcZQbp6W8haU,30
|
|
30
|
-
qcanvas/ui/course_viewer/tabs/page_tab/page_tab.py,sha256=cv-pCDri7thRJZv-gWUZrL2FUQAHe7vZthRAhejsqWY,771
|
|
31
|
-
qcanvas/ui/course_viewer/tabs/page_tab/page_tree.py,sha256=ugxEOaNUdWDsyj7GC-LUtH_OsONgdWRSyugFNPBhZS4,2172
|
|
32
|
-
qcanvas/ui/course_viewer/tabs/resource_rich_browser.py,sha256=422vPQF9afS_tLFqakMqk0qf-KR4N0gm9ytT5hVFF6I,6278
|
|
33
|
-
qcanvas/ui/course_viewer/tabs/util.py,sha256=rUVEGSREV9vTFs4o3AD2OjaSFA-GPsmelxYWz0J8OP4,48
|
|
34
|
-
qcanvas/ui/main_ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
|
-
qcanvas/ui/main_ui/course_viewer_container.py,sha256=R3w0EImYQTUMPPtoaTIZZTf8MCMDC_5Ia_c-MBJ6-QQ,1912
|
|
36
|
-
qcanvas/ui/main_ui/options/__init__.py,sha256=SlfWUzk6_E5uM9GIV-y9BVeKMwqn3pRx_xWhMyb1dfI,54
|
|
37
|
-
qcanvas/ui/main_ui/options/auto_download_resources_option.py,sha256=W9BleGh6egfN9d9awnjEAAFq6_6DyXyD-rIopkofVDw,1284
|
|
38
|
-
qcanvas/ui/main_ui/options/quick_sync_option.py,sha256=qEfmtLllO32ejc-bydCvFRjal5RUlk2HtC5Ld4mT7ss,753
|
|
39
|
-
qcanvas/ui/main_ui/options/sync_on_start_option.py,sha256=zFFAAyGZEa6qBchJJIm7bJpOwxcntnto9Ee-lzCiHX4,731
|
|
40
|
-
qcanvas/ui/main_ui/options/theme_selection_menu.py,sha256=MVudpolTToR1TRAtqfaFMUH__G0gc4oyqDAL5BH-7RY,1263
|
|
41
|
-
qcanvas/ui/main_ui/qcanvas_window.py,sha256=LXl6FQHSy6Lad1JmGSSoyqMsMxGUThku0QUQIqnuVIo,8543
|
|
42
|
-
qcanvas/ui/main_ui/status_bar_progress_display.py,sha256=ExFRWY1SPDS2t8CBOx80TlOdENrxXGnuv7ht-DPcnwY,4836
|
|
43
|
-
qcanvas/ui/memory_tree/__init__.py,sha256=-XLitM6teC0zmwPrGf-Q-A53-zgmIPASExdOtaLIvPU,107
|
|
44
|
-
qcanvas/ui/memory_tree/_tree_memory.py,sha256=CMKfCnrHj22ervaq7xB5U4AiKijYvghUK5ZL0MJIFmQ,1805
|
|
45
|
-
qcanvas/ui/memory_tree/memory_tree_widget.py,sha256=OT3TnYsUSbMowqR9my19QG4AuAdhTb29SGSa2406-SE,4432
|
|
46
|
-
qcanvas/ui/memory_tree/memory_tree_widget_item.py,sha256=JXk07AzrKsBnYAqhayIFYAwMfF_D_EfkfJY4Qyez47U,425
|
|
47
|
-
qcanvas/ui/setup/__init__.py,sha256=QWt2lEyLqWG5QC-BmCBlYyi0LZsBfsQYbP0XkvqA2f8,77
|
|
48
|
-
qcanvas/ui/setup/setup_checker.py,sha256=ysQpkVLIWn8BR3hKhekuRIsHNAOU-jnHm061dfQ_OcY,396
|
|
49
|
-
qcanvas/ui/setup/setup_dialog.py,sha256=HQTvIbB-T-DMf8-MIMxWWNNN6xdIW34jgAJtwjgki7U,8562
|
|
50
|
-
qcanvas/util/__init__.py,sha256=RmC5zxGHoTLudrx9uol55fM5dvIkFjBCroQGYXaELCA,51
|
|
51
|
-
qcanvas/util/auto_downloader.py,sha256=NZLr0joiXIWdfLB4DUiwC0MTry5ilREbZ-2qYRFGdxQ,1868
|
|
52
|
-
qcanvas/util/basic_fonts.py,sha256=1NK5_kejgH45mENwiTWvE5oOuAvGqWMX3hg9tTUCBi4,243
|
|
53
|
-
qcanvas/util/html_cleaner.py,sha256=O9_PhvZZw3RcPjdXZagAbNmp8Hfyq9fydBH-ee-DfII,615
|
|
54
|
-
qcanvas/util/layouts.py,sha256=7wQ0-DAbRHPPcfVIQoOmVhPdhGqcF-6qWE1-P86e7ys,1351
|
|
55
|
-
qcanvas/util/logs.py,sha256=VZKFITiW2WR2POEFVv5GRpEXic23Pzjehry-vH3g3Gk,138
|
|
56
|
-
qcanvas/util/paths.py,sha256=uEV4AJFaWtP7hbie7H6-MYnCUE4_IJl0fkuxuZVMffA,1306
|
|
57
|
-
qcanvas/util/qurl_util.py,sha256=NkskYvrMQJuYWMNF4DFQ4J5-YM5CGl5gHQKxJaAhHBE,197
|
|
58
|
-
qcanvas/util/settings/__init__.py,sha256=ivc8bczhQdEJsWse6fc81Xyz0i2YX57pL4UubM3NJfw,228
|
|
59
|
-
qcanvas/util/settings/_client_settings.py,sha256=VpJ80rE04iB-1bsQLr6wWzD5fB8fp-goy62o7OGABWo,1119
|
|
60
|
-
qcanvas/util/settings/_mapped_setting.py,sha256=Z6635FfDll9cCLfSkVg-unsDLvUWuKT5MmxJEiUkd2k,1823
|
|
61
|
-
qcanvas/util/settings/_ui_settings.py,sha256=zlWMjpntuqm7ZN3aBEROGrXc4bhtKOfWijmiGkdt1UA,804
|
|
62
|
-
qcanvas/util/themes.py,sha256=BE6lMf0lVE-0G_QYhK5emMdtKG4lUJw76HFX4go7R80,473
|
|
63
|
-
qcanvas/util/ui_tools.py,sha256=bSM1xrmZPn847YEbXAC9VIAv--8hMLMWrsEMWGA5p3E,916
|
|
64
|
-
qcanvas/util/url_checker.py,sha256=gaV_KZZsG5bfJaGBv9jbHJjq0rVxIH55HRtucT6Qkx8,144
|
|
65
|
-
qcanvas-1.0.11.dist-info/METADATA,sha256=H9tWTHDdBf-2N6U7Obn1eI3NQAw_wPeAXPx_PpwzuN8,1710
|
|
66
|
-
qcanvas-1.0.11.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
67
|
-
qcanvas-1.0.11.dist-info/entry_points.txt,sha256=46VbnhQ9w2CYdfhYcPfWgjXYHjsKshu0asQ1B_sAMac,44
|
|
68
|
-
qcanvas-1.0.11.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|