qcanvas 1.0.10.post2__py3-none-any.whl → 1.0.12__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.
Potentially problematic release.
This version of qcanvas might be problematic. Click here for more details.
- qcanvas/icons/file-download-failed.svg +22 -5
- qcanvas/icons/file-downloaded.svg +22 -5
- qcanvas/icons/file-not-downloaded.svg +22 -5
- qcanvas/icons/rc_icons.py +323 -328
- qcanvas/ui/course_viewer/content_tree.py +8 -4
- qcanvas/ui/course_viewer/course_viewer.py +3 -12
- qcanvas/ui/course_viewer/tabs/resource_rich_browser.py +17 -8
- qcanvas/ui/main_ui/qcanvas_window.py +2 -2
- qcanvas/ui/setup/setup_checker.py +1 -1
- qcanvas/ui/setup/setup_dialog.py +1 -1
- qcanvas/util/__init__.py +0 -2
- qcanvas/util/auto_downloader.py +1 -2
- qcanvas/util/paths.py +15 -22
- qcanvas/util/runtime.py +20 -0
- {qcanvas-1.0.10.post2.dist-info → qcanvas-1.0.12.dist-info}/METADATA +1 -1
- {qcanvas-1.0.10.post2.dist-info → qcanvas-1.0.12.dist-info}/RECORD +18 -17
- {qcanvas-1.0.10.post2.dist-info → qcanvas-1.0.12.dist-info}/WHEEL +0 -0
- {qcanvas-1.0.10.post2.dist-info → qcanvas-1.0.12.dist-info}/entry_points.txt +0 -0
|
@@ -1,6 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
<!-- Uploaded to: SVG Repo, www.svgrepo.com,
|
|
3
|
-
<svg
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
2
|
+
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
|
|
3
|
+
<svg width="800px"
|
|
4
|
+
height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
version="1.1" fill="#000000">
|
|
6
|
+
|
|
7
|
+
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
|
|
8
|
+
|
|
9
|
+
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>
|
|
10
|
+
|
|
11
|
+
<g id="SVGRepo_iconCarrier">
|
|
12
|
+
<g transform="translate(0 -1028.4)">
|
|
13
|
+
<path d="m5 1030.4c-1.1046 0-2 0.9-2 2v8 4 6c0 1.1 0.8954 2 2 2h14c1.105 0 2-0.9 2-2v-6-4-4l-6-6h-10z"
|
|
14
|
+
fill="#a31f1f"/>
|
|
15
|
+
<path d="m5 1029.4c-1.1046 0-2 0.9-2 2v8 4 6c0 1.1 0.8954 2 2 2h14c1.105 0 2-0.9 2-2v-6-4-4l-6-6h-10z"
|
|
16
|
+
fill="#db4343"/>
|
|
17
|
+
<path d="m21 1035.4-6-6v4c0 1.1 0.895 2 2 2h4z" fill="#a31f1f"/>
|
|
18
|
+
<path d="m6 8v1h12v-1h-12zm0 3v1h12v-1h-12zm0 3v1h12v-1h-12zm0 3v1h12v-1h-12z"
|
|
19
|
+
transform="translate(0 1028.4)" fill="#a31f1f"/>
|
|
20
|
+
</g>
|
|
21
|
+
</g>
|
|
22
|
+
|
|
6
23
|
</svg>
|
|
@@ -1,6 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
<!-- Uploaded to: SVG Repo, www.svgrepo.com,
|
|
3
|
-
<svg
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
2
|
+
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
|
|
3
|
+
<svg width="800px"
|
|
4
|
+
height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
version="1.1" fill="#000000">
|
|
6
|
+
|
|
7
|
+
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
|
|
8
|
+
|
|
9
|
+
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>
|
|
10
|
+
|
|
11
|
+
<g id="SVGRepo_iconCarrier">
|
|
12
|
+
<g transform="translate(0 -1028.4)">
|
|
13
|
+
<path d="m5 1030.4c-1.1046 0-2 0.9-2 2v8 4 6c0 1.1 0.8954 2 2 2h14c1.105 0 2-0.9 2-2v-6-4-4l-6-6h-10z"
|
|
14
|
+
fill="#1fa321"/>
|
|
15
|
+
<path d="m5 1029.4c-1.1046 0-2 0.9-2 2v8 4 6c0 1.1 0.8954 2 2 2h14c1.105 0 2-0.9 2-2v-6-4-4l-6-6h-10z"
|
|
16
|
+
fill="#43db45"/>
|
|
17
|
+
<path d="m21 1035.4-6-6v4c0 1.1 0.895 2 2 2h4z" fill="#1fa321"/>
|
|
18
|
+
<path d="m6 8v1h12v-1h-12zm0 3v1h12v-1h-12zm0 3v1h12v-1h-12zm0 3v1h12v-1h-12z"
|
|
19
|
+
transform="translate(0 1028.4)" fill="#1fa321"/>
|
|
20
|
+
</g>
|
|
21
|
+
</g>
|
|
22
|
+
|
|
6
23
|
</svg>
|
|
@@ -1,6 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
<!-- Uploaded to: SVG Repo, www.svgrepo.com,
|
|
3
|
-
<svg
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
2
|
+
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
|
|
3
|
+
<svg width="800px"
|
|
4
|
+
height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
version="1.1" fill="#000000">
|
|
6
|
+
|
|
7
|
+
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
|
|
8
|
+
|
|
9
|
+
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>
|
|
10
|
+
|
|
11
|
+
<g id="SVGRepo_iconCarrier">
|
|
12
|
+
<g transform="translate(0 -1028.4)">
|
|
13
|
+
<path d="m5 1030.4c-1.1046 0-2 0.9-2 2v8 4 6c0 1.1 0.8954 2 2 2h14c1.105 0 2-0.9 2-2v-6-4-4l-6-6h-10z"
|
|
14
|
+
fill="#74898b"/>
|
|
15
|
+
<path d="m5 1029.4c-1.1046 0-2 0.9-2 2v8 4 6c0 1.1 0.8954 2 2 2h14c1.105 0 2-0.9 2-2v-6-4-4l-6-6h-10z"
|
|
16
|
+
fill="#bdc3c7"/>
|
|
17
|
+
<path d="m21 1035.4-6-6v4c0 1.1 0.895 2 2 2h4z" fill="#74898b"/>
|
|
18
|
+
<path d="m6 8v1h12v-1h-12zm0 3v1h12v-1h-12zm0 3v1h12v-1h-12zm0 3v1h12v-1h-12z"
|
|
19
|
+
transform="translate(0 1028.4)" fill="#74898b"/>
|
|
20
|
+
</g>
|
|
21
|
+
</g>
|
|
22
|
+
|
|
6
23
|
</svg>
|
qcanvas/icons/rc_icons.py
CHANGED
|
@@ -6,335 +6,330 @@
|
|
|
6
6
|
from qtpy import QtCore
|
|
7
7
|
|
|
8
8
|
qt_resource_data = b"\
|
|
9
|
-
\x00\x00\
|
|
9
|
+
\x00\x00\x04A\
|
|
10
10
|
<\
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
!DOCTYPE svg PUB\
|
|
12
|
+
LIC \x22-//W3C//DTD\
|
|
13
|
+
SVG 1.1//EN\x22 \x22h\
|
|
14
|
+
ttp://www.w3.org\
|
|
15
|
+
/Graphics/SVG/1.\
|
|
16
|
+
1/DTD/svg11.dtd\x22\
|
|
17
|
+
>\x0a<!-- Uploaded \
|
|
18
|
+
to: SVG Repo, ww\
|
|
19
|
+
w.svgrepo.com, T\
|
|
20
|
+
ransformed by: S\
|
|
17
21
|
VG Repo Mixer To\
|
|
18
|
-
ols -->\x0a<svg
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
=\
|
|
22
|
-
=\
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
0
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
-
|
|
68
|
-
|
|
69
|
-
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
124 0.085 0.035 \
|
|
78
|
-
0.184 0.056 0.28\
|
|
79
|
-
7 0.057h0c0 0 0 \
|
|
80
|
-
0 0 0 0.207 0 0.\
|
|
81
|
-
394-0.084 0.53-0\
|
|
82
|
-
.219l5.001-5c0.1\
|
|
83
|
-
36-0.136 0.22-0.\
|
|
84
|
-
324 0.22-0.531 0\
|
|
85
|
-
-0.415-0.336-0.7\
|
|
86
|
-
51-0.751-0.751-0\
|
|
87
|
-
.207 0-0.395 0.0\
|
|
88
|
-
84-0.531 0.22v0z\
|
|
89
|
-
\x22></path>\x0d\x0a</svg\
|
|
90
|
-
>\
|
|
91
|
-
\x00\x00\x06\xbd\
|
|
22
|
+
ols -->\x0a<svg wid\
|
|
23
|
+
th=\x22800px\x22 heigh\
|
|
24
|
+
t=\x22800px\x22 viewBo\
|
|
25
|
+
x=\x220 0 24 24\x22 xm\
|
|
26
|
+
lns:rdf=\x22http://\
|
|
27
|
+
www.w3.org/1999/\
|
|
28
|
+
02/22-rdf-syntax\
|
|
29
|
+
-ns#\x22 xmlns=\x22htt\
|
|
30
|
+
p://www.w3.org/2\
|
|
31
|
+
000/svg\x22 version\
|
|
32
|
+
=\x221.1\x22 xmlns:cc=\
|
|
33
|
+
\x22http://creative\
|
|
34
|
+
commons.org/ns#\x22\
|
|
35
|
+
xmlns:dc=\x22http:\
|
|
36
|
+
//purl.org/dc/el\
|
|
37
|
+
ements/1.1/\x22 fil\
|
|
38
|
+
l=\x22#000000\x22>\x0a\x0d<g\
|
|
39
|
+
id=\x22SVGRepo_bgC\
|
|
40
|
+
arrier\x22 stroke-w\
|
|
41
|
+
idth=\x220\x22/>\x0a\x0d<g i\
|
|
42
|
+
d=\x22SVGRepo_trace\
|
|
43
|
+
rCarrier\x22 stroke\
|
|
44
|
+
-linecap=\x22round\x22\
|
|
45
|
+
stroke-linejoin\
|
|
46
|
+
=\x22round\x22/>\x0a\x0d<g i\
|
|
47
|
+
d=\x22SVGRepo_iconC\
|
|
48
|
+
arrier\x22> <g tran\
|
|
49
|
+
sform=\x22translate\
|
|
50
|
+
(0 -1028.4)\x22> <p\
|
|
51
|
+
ath d=\x22m5 1030.4\
|
|
52
|
+
c-1.1046 0-2 0.9\
|
|
53
|
+
-2 2v8 4 6c0 1.1\
|
|
54
|
+
0.8954 2 2 2h14\
|
|
55
|
+
c1.105 0 2-0.9 2\
|
|
56
|
+
-2v-6-4-4l-6-6h-\
|
|
57
|
+
10z\x22 fill=\x22#7489\
|
|
58
|
+
8b\x22/> <path d=\x22m\
|
|
59
|
+
5 1029.4c-1.1046\
|
|
60
|
+
0-2 0.9-2 2v8 4\
|
|
61
|
+
6c0 1.1 0.8954 \
|
|
62
|
+
2 2 2h14c1.105 0\
|
|
63
|
+
2-0.9 2-2v-6-4-\
|
|
64
|
+
4l-6-6h-10z\x22 fil\
|
|
65
|
+
l=\x22#bdc3c7\x22/> <p\
|
|
66
|
+
ath d=\x22m21 1035.\
|
|
67
|
+
4-6-6v4c0 1.1 0.\
|
|
68
|
+
895 2 2 2h4z\x22 fi\
|
|
69
|
+
ll=\x22#74898b\x22/> <\
|
|
70
|
+
path d=\x22m6 8v1h1\
|
|
71
|
+
2v-1h-12zm0 3v1h\
|
|
72
|
+
12v-1h-12zm0 3v1\
|
|
73
|
+
h12v-1h-12zm0 3v\
|
|
74
|
+
1h12v-1h-12z\x22 tr\
|
|
75
|
+
ansform=\x22transla\
|
|
76
|
+
te(0 1028.4)\x22 fi\
|
|
77
|
+
ll=\x22#74898b\x22/> <\
|
|
78
|
+
/g> </g>\x0a\x0d</svg>\
|
|
79
|
+
\
|
|
80
|
+
\x00\x00\x06\xc1\
|
|
92
81
|
<\
|
|
93
82
|
?xml version=\x221.\
|
|
94
83
|
0\x22 encoding=\x22utf\
|
|
95
|
-
-8\x22?>\
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
<title>
|
|
109
|
-
|
|
110
|
-
=\x22M19.943 5
|
|
111
|
-
-1.145-0.
|
|
112
|
-
|
|
113
|
-
.008-1.461
|
|
114
|
-
|
|
115
|
-
.040l0.042
|
|
116
|
-
|
|
117
|
-
746 2.648-2
|
|
118
|
-
4.635 0 0.
|
|
119
|
-
0.074 0.001
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
0 0 0 0 0h
|
|
124
|
-
|
|
125
|
-
.346 0.75-0
|
|
126
|
-
|
|
127
|
-
.026-0.001
|
|
128
|
-
-0.001-0.
|
|
129
|
-
.441 0.8-2
|
|
130
|
-
.98-3.341l0
|
|
131
|
-
0.010c0.934
|
|
132
|
-
|
|
133
|
-
23-0.812 1
|
|
134
|
-
2.287 0.
|
|
135
|
-
|
|
136
|
-
0.018c1.23
|
|
137
|
-
2.053 1.
|
|
138
|
-
|
|
139
|
-
-0 0.033-0
|
|
140
|
-
|
|
141
|
-
.19 0.051 0
|
|
142
|
-
0.051 0.631
|
|
143
|
-
699-1.084 3
|
|
144
|
-
2.598 3.
|
|
145
|
-
|
|
146
|
-
1.102-3.424
|
|
147
|
-
|
|
148
|
-
0 0 0 0 0
|
|
149
|
-
0.414 0.335
|
|
150
|
-
|
|
151
|
-
001c0.414-0
|
|
152
|
-
-0.336 0.75
|
|
153
|
-
|
|
154
|
-
.819-4.485
|
|
155
|
-
-5.329 2.
|
|
156
|
-
|
|
157
|
-
.457-4.997
|
|
158
|
-
|
|
159
|
-
.046-0.
|
|
160
|
-
0.027c0-0
|
|
161
|
-
-0.037 0-0
|
|
162
|
-
-2.018-1.
|
|
163
|
-
|
|
164
|
-
0.028-0.
|
|
165
|
-
46 25.459c
|
|
166
|
-
0.145-0.
|
|
167
|
-
|
|
168
|
-
0.001 0.016
|
|
169
|
-
|
|
170
|
-
052 0 0.082
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
255 0.178l0
|
|
178
|
-
0.002c0.084
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
015 0.287-0
|
|
182
|
-
-0.007 0.
|
|
183
|
-
|
|
184
|
-
.104 0.26-0
|
|
185
|
-
|
|
186
|
-
0.12-0.147
|
|
187
|
-
-0.235l0.
|
|
188
|
-
|
|
189
|
-
.061-0.173
|
|
190
|
-
-0.271 0-0
|
|
191
|
-
-0.006-0-0
|
|
192
|
-
|
|
193
|
-
092-0.397-0
|
|
194
|
-
0.542l0.001
|
|
195
|
-
|
|
196
|
-
.334-0.195
|
|
197
|
-
0.
|
|
198
|
-
|
|
199
|
-
.001-0.001z\
|
|
200
|
-
|
|
201
|
-
\
|
|
84
|
+
-8\x22?>\x0a<!-- Uploa\
|
|
85
|
+
ded to: SVG Repo\
|
|
86
|
+
, www.svgrepo.co\
|
|
87
|
+
m, Generator: SV\
|
|
88
|
+
G Repo Mixer Too\
|
|
89
|
+
ls -->\x0a<svg fill\
|
|
90
|
+
=\x22#000000\x22 width\
|
|
91
|
+
=\x22800px\x22 height=\
|
|
92
|
+
\x22800px\x22 viewBox=\
|
|
93
|
+
\x220 0 32 32\x22 vers\
|
|
94
|
+
ion=\x221.1\x22 xmlns=\
|
|
95
|
+
\x22http://www.w3.o\
|
|
96
|
+
rg/2000/svg\x22>\x0a \
|
|
97
|
+
<title>questio\
|
|
98
|
+
n</title>\x0a <p\
|
|
99
|
+
ath d=\x22M19.943 5\
|
|
100
|
+
.251c-1.145-0.63\
|
|
101
|
+
5-2.511-1.008-3.\
|
|
102
|
+
964-1.008-1.461 \
|
|
103
|
+
0-2.834 0.378-4.\
|
|
104
|
+
026 1.040l0.042-\
|
|
105
|
+
0.022c-1.649 0.9\
|
|
106
|
+
16-2.746 2.648-2\
|
|
107
|
+
.746 4.635 0 0.0\
|
|
108
|
+
37 0 0.074 0.001\
|
|
109
|
+
0.111l-0-0.006c\
|
|
110
|
+
0.001 0.413 0.33\
|
|
111
|
+
6 0.747 0.75 0.7\
|
|
112
|
+
47 0 0 0 0 0 0h-\
|
|
113
|
+
0c0.407-0.021 0.\
|
|
114
|
+
731-0.346 0.75-0\
|
|
115
|
+
.751l0-0.002c-0.\
|
|
116
|
+
001-0.026-0.001-\
|
|
117
|
+
0.058-0.001-0.08\
|
|
118
|
+
9 0-1.441 0.8-2.\
|
|
119
|
+
694 1.98-3.341l0\
|
|
120
|
+
.020-0.010c0.934\
|
|
121
|
+
-0.511 2.047-0.8\
|
|
122
|
+
12 3.23-0.812 1.\
|
|
123
|
+
178 0 2.287 0.29\
|
|
124
|
+
8 3.255 0.824l-0\
|
|
125
|
+
.036-0.018c1.23 \
|
|
126
|
+
0.657 2.053 1.93\
|
|
127
|
+
3 2.053 3.401 0 \
|
|
128
|
+
0.017-0 0.033-0 \
|
|
129
|
+
0.050l0-0.003c0.\
|
|
130
|
+
033 0.19 0.051 0\
|
|
131
|
+
.408 0.051 0.631\
|
|
132
|
+
0 1.699-1.084 3\
|
|
133
|
+
.145-2.598 3.684\
|
|
134
|
+
l-0.027 0.008c-2\
|
|
135
|
+
.303 1.102-3.424\
|
|
136
|
+
3.285-3.426 6.6\
|
|
137
|
+
77 0 0 0 0 0 0.0\
|
|
138
|
+
01 0 0.414 0.335\
|
|
139
|
+
0.749 0.749 0.7\
|
|
140
|
+
49h0.001c0.414-0\
|
|
141
|
+
0.75-0.336 0.75\
|
|
142
|
+
-0.75v0c0.002-2.\
|
|
143
|
+
793 0.819-4.485 \
|
|
144
|
+
2.586-5.329 2.03\
|
|
145
|
+
7-0.783 3.457-2.\
|
|
146
|
+
725 3.457-4.997 \
|
|
147
|
+
0-0.238-0.016-0.\
|
|
148
|
+
473-0.046-0.703l\
|
|
149
|
+
0.003 0.027c0-0.\
|
|
150
|
+
017 0-0.037 0-0.\
|
|
151
|
+
057 0-2.018-1.12\
|
|
152
|
+
3-3.774-2.779-4.\
|
|
153
|
+
676l-0.028-0.014\
|
|
154
|
+
zM15.46 25.459c-\
|
|
155
|
+
0.123 0.145-0.19\
|
|
156
|
+
8 0.334-0.2 0.54\
|
|
157
|
+
1v0c-0.001 0.016\
|
|
158
|
+
-0.002 0.034-0.0\
|
|
159
|
+
02 0.052 0 0.082\
|
|
160
|
+
0.015 0.16 0.04\
|
|
161
|
+
4 0.231l-0.002-0\
|
|
162
|
+
.004c0.039 0.094\
|
|
163
|
+
0.093 0.173 0.1\
|
|
164
|
+
6 0.24l0 0c0.071\
|
|
165
|
+
0.076 0.158 0.1\
|
|
166
|
+
37 0.255 0.178l0\
|
|
167
|
+
.005 0.002c0.084\
|
|
168
|
+
0.026 0.18 0.04\
|
|
169
|
+
1 0.28 0.041s0.1\
|
|
170
|
+
96-0.015 0.287-0\
|
|
171
|
+
.043l-0.007 0.00\
|
|
172
|
+
2c0.102-0.043 0.\
|
|
173
|
+
189-0.104 0.26-0\
|
|
174
|
+
.179l0-0c0.067-0\
|
|
175
|
+
.067 0.12-0.147 \
|
|
176
|
+
0.157-0.235l0.00\
|
|
177
|
+
2-0.005c0.038-0.\
|
|
178
|
+
079 0.061-0.173 \
|
|
179
|
+
0.061-0.271 0-0.\
|
|
180
|
+
003-0-0.006-0-0.\
|
|
181
|
+
009v0c-0.010-0.2\
|
|
182
|
+
09-0.092-0.397-0\
|
|
183
|
+
.221-0.542l0.001\
|
|
184
|
+
0.001c-0.145-0.\
|
|
185
|
+
121-0.334-0.195-\
|
|
186
|
+
0.54-0.195s-0.39\
|
|
187
|
+
5 0.074-0.541 0.\
|
|
188
|
+
196l0.001-0.001z\
|
|
189
|
+
\x22></path>\x0a</svg>\
|
|
190
|
+
\
|
|
191
|
+
\x00\x00\x04A\
|
|
202
192
|
<\
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
193
|
+
!DOCTYPE svg PUB\
|
|
194
|
+
LIC \x22-//W3C//DTD\
|
|
195
|
+
SVG 1.1//EN\x22 \x22h\
|
|
196
|
+
ttp://www.w3.org\
|
|
197
|
+
/Graphics/SVG/1.\
|
|
198
|
+
1/DTD/svg11.dtd\x22\
|
|
199
|
+
>\x0a<!-- Uploaded \
|
|
200
|
+
to: SVG Repo, ww\
|
|
201
|
+
w.svgrepo.com, T\
|
|
202
|
+
ransformed by: S\
|
|
209
203
|
VG Repo Mixer To\
|
|
210
|
-
ols -->\x0a<svg
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
=\
|
|
214
|
-
=\
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
.
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
0
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
5
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
0
|
|
251
|
-
|
|
204
|
+
ols -->\x0a<svg wid\
|
|
205
|
+
th=\x22800px\x22 heigh\
|
|
206
|
+
t=\x22800px\x22 viewBo\
|
|
207
|
+
x=\x220 0 24 24\x22 xm\
|
|
208
|
+
lns:rdf=\x22http://\
|
|
209
|
+
www.w3.org/1999/\
|
|
210
|
+
02/22-rdf-syntax\
|
|
211
|
+
-ns#\x22 xmlns=\x22htt\
|
|
212
|
+
p://www.w3.org/2\
|
|
213
|
+
000/svg\x22 version\
|
|
214
|
+
=\x221.1\x22 xmlns:cc=\
|
|
215
|
+
\x22http://creative\
|
|
216
|
+
commons.org/ns#\x22\
|
|
217
|
+
xmlns:dc=\x22http:\
|
|
218
|
+
//purl.org/dc/el\
|
|
219
|
+
ements/1.1/\x22 fil\
|
|
220
|
+
l=\x22#000000\x22>\x0a\x0d<g\
|
|
221
|
+
id=\x22SVGRepo_bgC\
|
|
222
|
+
arrier\x22 stroke-w\
|
|
223
|
+
idth=\x220\x22/>\x0a\x0d<g i\
|
|
224
|
+
d=\x22SVGRepo_trace\
|
|
225
|
+
rCarrier\x22 stroke\
|
|
226
|
+
-linecap=\x22round\x22\
|
|
227
|
+
stroke-linejoin\
|
|
228
|
+
=\x22round\x22/>\x0a\x0d<g i\
|
|
229
|
+
d=\x22SVGRepo_iconC\
|
|
230
|
+
arrier\x22> <g tran\
|
|
231
|
+
sform=\x22translate\
|
|
232
|
+
(0 -1028.4)\x22> <p\
|
|
233
|
+
ath d=\x22m5 1030.4\
|
|
234
|
+
c-1.1046 0-2 0.9\
|
|
235
|
+
-2 2v8 4 6c0 1.1\
|
|
236
|
+
0.8954 2 2 2h14\
|
|
237
|
+
c1.105 0 2-0.9 2\
|
|
238
|
+
-2v-6-4-4l-6-6h-\
|
|
239
|
+
10z\x22 fill=\x22#1fa3\
|
|
240
|
+
21\x22/> <path d=\x22m\
|
|
241
|
+
5 1029.4c-1.1046\
|
|
242
|
+
0-2 0.9-2 2v8 4\
|
|
243
|
+
6c0 1.1 0.8954 \
|
|
244
|
+
2 2 2h14c1.105 0\
|
|
245
|
+
2-0.9 2-2v-6-4-\
|
|
246
|
+
4l-6-6h-10z\x22 fil\
|
|
247
|
+
l=\x22#43db45\x22/> <p\
|
|
248
|
+
ath d=\x22m21 1035.\
|
|
249
|
+
4-6-6v4c0 1.1 0.\
|
|
250
|
+
895 2 2 2h4z\x22 fi\
|
|
251
|
+
ll=\x22#1fa321\x22/> <\
|
|
252
|
+
path d=\x22m6 8v1h1\
|
|
253
|
+
2v-1h-12zm0 3v1h\
|
|
254
|
+
12v-1h-12zm0 3v1\
|
|
255
|
+
h12v-1h-12zm0 3v\
|
|
256
|
+
1h12v-1h-12z\x22 tr\
|
|
257
|
+
ansform=\x22transla\
|
|
258
|
+
te(0 1028.4)\x22 fi\
|
|
259
|
+
ll=\x22#1fa321\x22/> <\
|
|
260
|
+
/g> </g>\x0a\x0d</svg>\
|
|
252
261
|
\
|
|
253
|
-
\x00\x00\
|
|
262
|
+
\x00\x00\x04A\
|
|
254
263
|
<\
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
264
|
+
!DOCTYPE svg PUB\
|
|
265
|
+
LIC \x22-//W3C//DTD\
|
|
266
|
+
SVG 1.1//EN\x22 \x22h\
|
|
267
|
+
ttp://www.w3.org\
|
|
268
|
+
/Graphics/SVG/1.\
|
|
269
|
+
1/DTD/svg11.dtd\x22\
|
|
270
|
+
>\x0a<!-- Uploaded \
|
|
271
|
+
to: SVG Repo, ww\
|
|
272
|
+
w.svgrepo.com, T\
|
|
273
|
+
ransformed by: S\
|
|
261
274
|
VG Repo Mixer To\
|
|
262
|
-
ols -->\x0a<svg
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
=\
|
|
266
|
-
=\
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
.
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
.336 0.751 0.751\
|
|
321
|
-
0.751 0.207 0 0\
|
|
322
|
-
.395-0.084 0.53-\
|
|
323
|
-
0.219v0l3.005-3.\
|
|
324
|
-
005 3.004 3.005c\
|
|
325
|
-
0.136 0.136 0.32\
|
|
326
|
-
4 0.22 0.531 0.2\
|
|
327
|
-
2 0.415 0 0.751-\
|
|
328
|
-
0.336 0.751-0.75\
|
|
329
|
-
1 0-0.207-0.084-\
|
|
330
|
-
0.395-0.22-0.531\
|
|
331
|
-
l-3.005-3.004 3.\
|
|
332
|
-
005-3.005c0.135-\
|
|
333
|
-
0.136 0.218-0.32\
|
|
334
|
-
3 0.218-0.53s-0.\
|
|
335
|
-
083-0.394-0.218-\
|
|
336
|
-
0.53l0 0z\x22></pat\
|
|
337
|
-
h>\x0d\x0a</svg>\
|
|
275
|
+
ols -->\x0a<svg wid\
|
|
276
|
+
th=\x22800px\x22 heigh\
|
|
277
|
+
t=\x22800px\x22 viewBo\
|
|
278
|
+
x=\x220 0 24 24\x22 xm\
|
|
279
|
+
lns:rdf=\x22http://\
|
|
280
|
+
www.w3.org/1999/\
|
|
281
|
+
02/22-rdf-syntax\
|
|
282
|
+
-ns#\x22 xmlns=\x22htt\
|
|
283
|
+
p://www.w3.org/2\
|
|
284
|
+
000/svg\x22 version\
|
|
285
|
+
=\x221.1\x22 xmlns:cc=\
|
|
286
|
+
\x22http://creative\
|
|
287
|
+
commons.org/ns#\x22\
|
|
288
|
+
xmlns:dc=\x22http:\
|
|
289
|
+
//purl.org/dc/el\
|
|
290
|
+
ements/1.1/\x22 fil\
|
|
291
|
+
l=\x22#000000\x22>\x0a\x0d<g\
|
|
292
|
+
id=\x22SVGRepo_bgC\
|
|
293
|
+
arrier\x22 stroke-w\
|
|
294
|
+
idth=\x220\x22/>\x0a\x0d<g i\
|
|
295
|
+
d=\x22SVGRepo_trace\
|
|
296
|
+
rCarrier\x22 stroke\
|
|
297
|
+
-linecap=\x22round\x22\
|
|
298
|
+
stroke-linejoin\
|
|
299
|
+
=\x22round\x22/>\x0a\x0d<g i\
|
|
300
|
+
d=\x22SVGRepo_iconC\
|
|
301
|
+
arrier\x22> <g tran\
|
|
302
|
+
sform=\x22translate\
|
|
303
|
+
(0 -1028.4)\x22> <p\
|
|
304
|
+
ath d=\x22m5 1030.4\
|
|
305
|
+
c-1.1046 0-2 0.9\
|
|
306
|
+
-2 2v8 4 6c0 1.1\
|
|
307
|
+
0.8954 2 2 2h14\
|
|
308
|
+
c1.105 0 2-0.9 2\
|
|
309
|
+
-2v-6-4-4l-6-6h-\
|
|
310
|
+
10z\x22 fill=\x22#a31f\
|
|
311
|
+
1f\x22/> <path d=\x22m\
|
|
312
|
+
5 1029.4c-1.1046\
|
|
313
|
+
0-2 0.9-2 2v8 4\
|
|
314
|
+
6c0 1.1 0.8954 \
|
|
315
|
+
2 2 2h14c1.105 0\
|
|
316
|
+
2-0.9 2-2v-6-4-\
|
|
317
|
+
4l-6-6h-10z\x22 fil\
|
|
318
|
+
l=\x22#db4343\x22/> <p\
|
|
319
|
+
ath d=\x22m21 1035.\
|
|
320
|
+
4-6-6v4c0 1.1 0.\
|
|
321
|
+
895 2 2 2h4z\x22 fi\
|
|
322
|
+
ll=\x22#a31f1f\x22/> <\
|
|
323
|
+
path d=\x22m6 8v1h1\
|
|
324
|
+
2v-1h-12zm0 3v1h\
|
|
325
|
+
12v-1h-12zm0 3v1\
|
|
326
|
+
h12v-1h-12zm0 3v\
|
|
327
|
+
1h12v-1h-12z\x22 tr\
|
|
328
|
+
ansform=\x22transla\
|
|
329
|
+
te(0 1028.4)\x22 fi\
|
|
330
|
+
ll=\x22#a31f1f\x22/> <\
|
|
331
|
+
/g> </g>\x0a\x0d</svg>\
|
|
332
|
+
\
|
|
338
333
|
\x00\x00\x0d7\
|
|
339
334
|
\x00\
|
|
340
335
|
\x00>\xe8x\xda\xdd[m\x8f\xdb6\x12\xfe\xbe\xbfB\
|
|
@@ -580,16 +575,16 @@ qt_resource_name = b"\
|
|
|
580
575
|
qt_resource_struct = b"\
|
|
581
576
|
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x01\
|
|
582
577
|
\x00\x00\x00\x00\x00\x00\x00\x00\
|
|
583
|
-
\x00\x00\x00\xbc\x00\x01\x00\x00\x00\x01\x00\x00\x13\
|
|
584
|
-
\x00\x00\x01\x90\
|
|
585
|
-
\x00\x00\x00Z\x00\x00\x00\x00\x00\x01\x00\x00\x0b\
|
|
586
|
-
\x00\x00\x01\
|
|
578
|
+
\x00\x00\x00\xbc\x00\x01\x00\x00\x00\x01\x00\x00\x13\x94\
|
|
579
|
+
\x00\x00\x01\x90\xe9\x06O\xda\
|
|
580
|
+
\x00\x00\x00Z\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x0a\
|
|
581
|
+
\x00\x00\x01\x91\x0a\xd7b>\
|
|
587
582
|
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
|
|
588
|
-
\x00\x00\x01\
|
|
589
|
-
\x00\x00\x004\x00\x00\x00\x00\x00\x01\x00\x00\
|
|
590
|
-
\x00\x00\x01\x90\
|
|
591
|
-
\x00\x00\x00\x86\x00\x00\x00\x00\x00\x01\x00\x00\
|
|
592
|
-
\x00\x00\x01\
|
|
583
|
+
\x00\x00\x01\x91\x0a\xdehx\
|
|
584
|
+
\x00\x00\x004\x00\x00\x00\x00\x00\x01\x00\x00\x04E\
|
|
585
|
+
\x00\x00\x01\x90\xe9\x06O\xda\
|
|
586
|
+
\x00\x00\x00\x86\x00\x00\x00\x00\x00\x01\x00\x00\x0fO\
|
|
587
|
+
\x00\x00\x01\x91\x0a\xdbPx\
|
|
593
588
|
"
|
|
594
589
|
|
|
595
590
|
|
|
@@ -45,8 +45,8 @@ class ContentTree(MemoryTreeWidget, Generic[T]):
|
|
|
45
45
|
*,
|
|
46
46
|
header_text: str | Sequence[str],
|
|
47
47
|
indentation: int = 20,
|
|
48
|
-
max_width: int,
|
|
49
|
-
min_width: int,
|
|
48
|
+
max_width: Optional[int] = None,
|
|
49
|
+
min_width: Optional[int] = None,
|
|
50
50
|
) -> None:
|
|
51
51
|
if not isinstance(header_text, str) and isinstance(header_text, Sequence):
|
|
52
52
|
self.setHeaderLabels(header_text)
|
|
@@ -54,8 +54,12 @@ class ContentTree(MemoryTreeWidget, Generic[T]):
|
|
|
54
54
|
self.setHeaderLabel(header_text)
|
|
55
55
|
|
|
56
56
|
self.setIndentation(indentation)
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
|
|
58
|
+
if max_width is not None:
|
|
59
|
+
self.setMaximumWidth(max_width)
|
|
60
|
+
|
|
61
|
+
if min_width is not None:
|
|
62
|
+
self.setMinimumWidth(min_width)
|
|
59
63
|
|
|
60
64
|
def reload(self, data: T, *, sync_receipt: SyncReceipt) -> None:
|
|
61
65
|
self._reloading = True
|
|
@@ -47,18 +47,12 @@ class CourseViewer(QWidget):
|
|
|
47
47
|
downloader=downloader,
|
|
48
48
|
sync_receipt=sync_receipt,
|
|
49
49
|
)
|
|
50
|
-
# self._files_tab = FileTab.create_from_receipt(
|
|
51
|
-
# course=course,
|
|
52
|
-
# downloader=downloader,
|
|
53
|
-
# sync_receipt=sync_receipt,
|
|
54
|
-
# )
|
|
55
50
|
|
|
56
51
|
self._tabs = QTabWidget()
|
|
57
52
|
self._tabs.addTab(self._pages_tab, "Pages")
|
|
58
53
|
self._tabs.addTab(self._assignments_tab, "Assignments")
|
|
59
54
|
self._tabs.addTab(self._mail_tab, "Mail")
|
|
60
55
|
self._tabs.addTab(QLabel("Not implemented"), "Files")
|
|
61
|
-
# self._tabs.addTab(self._files_tab, "Files")
|
|
62
56
|
# self._tabs.addTab(QLabel("Not implemented"), "Panopto") # The meme lives on!
|
|
63
57
|
|
|
64
58
|
self.setLayout(layout(QVBoxLayout, self._course_label, self._tabs))
|
|
@@ -84,17 +78,14 @@ class CourseViewer(QWidget):
|
|
|
84
78
|
updates = sync_receipt.updates_by_course.get(self._course_id, None)
|
|
85
79
|
|
|
86
80
|
if updates is not None:
|
|
87
|
-
if len(updates.updated_resources) > 0:
|
|
88
|
-
self._highlight_tab(0)
|
|
89
|
-
|
|
90
81
|
if len(updates.updated_pages) > 0:
|
|
91
|
-
self._highlight_tab(
|
|
82
|
+
self._highlight_tab(0)
|
|
92
83
|
|
|
93
84
|
if len(updates.updated_assignments) > 0:
|
|
94
|
-
self._highlight_tab(
|
|
85
|
+
self._highlight_tab(1)
|
|
95
86
|
|
|
96
87
|
if len(updates.updated_messages) > 0:
|
|
97
|
-
self._highlight_tab(
|
|
88
|
+
self._highlight_tab(2)
|
|
98
89
|
else:
|
|
99
90
|
for index in range(0, 4):
|
|
100
91
|
self._unhighlight_tab(index)
|
|
@@ -50,12 +50,6 @@ class ResourceRichBrowser(QTextBrowser):
|
|
|
50
50
|
self._downloader.download_finished.connect(self._download_updated)
|
|
51
51
|
self._downloader.download_failed.connect(self._download_updated)
|
|
52
52
|
|
|
53
|
-
# _dark_listener.theme_changed.connect(self._theme_changed)
|
|
54
|
-
|
|
55
|
-
# @Slot()
|
|
56
|
-
# def _theme_changed(self, theme: str) -> None:
|
|
57
|
-
# print(theme)
|
|
58
|
-
|
|
59
53
|
def show_blank(self, completely_blank: bool = False) -> None:
|
|
60
54
|
if completely_blank:
|
|
61
55
|
self.clear()
|
|
@@ -102,16 +96,31 @@ class ResourceRichBrowser(QTextBrowser):
|
|
|
102
96
|
)
|
|
103
97
|
continue
|
|
104
98
|
|
|
105
|
-
file_link_tag = self._create_resource_link_tag(
|
|
99
|
+
file_link_tag = self._create_resource_link_tag(
|
|
100
|
+
doc, resource_id, resource_link.name == "img"
|
|
101
|
+
)
|
|
106
102
|
resource_link.replace_with(file_link_tag)
|
|
107
103
|
except NoExtractorError:
|
|
108
104
|
pass
|
|
109
105
|
|
|
110
106
|
return str(doc)
|
|
111
107
|
|
|
112
|
-
def _create_resource_link_tag(
|
|
108
|
+
def _create_resource_link_tag(
|
|
109
|
+
self, doc: BeautifulSoup, resource_id: str, is_image: bool
|
|
110
|
+
) -> Tag:
|
|
113
111
|
resource = self._current_content_resources[resource_id]
|
|
114
112
|
|
|
113
|
+
# todo not sure if this is a good idea or not
|
|
114
|
+
# if is_image and resource.download_state == db.ResourceDownloadState.DOWNLOADED:
|
|
115
|
+
# location = self._downloader.resource_download_location(resource)
|
|
116
|
+
#
|
|
117
|
+
# file_link_tag = doc.new_tag(
|
|
118
|
+
# "img",
|
|
119
|
+
# attrs={
|
|
120
|
+
# "source": location.absolute(),
|
|
121
|
+
# },
|
|
122
|
+
# )
|
|
123
|
+
# else:
|
|
115
124
|
file_link_tag = doc.new_tag(
|
|
116
125
|
"a",
|
|
117
126
|
attrs={
|
|
@@ -23,7 +23,7 @@ from qcanvas.ui.main_ui.options.quick_sync_option import QuickSyncOption
|
|
|
23
23
|
from qcanvas.ui.main_ui.options.sync_on_start_option import SyncOnStartOption
|
|
24
24
|
from qcanvas.ui.main_ui.options.theme_selection_menu import ThemeSelectionMenu
|
|
25
25
|
from qcanvas.ui.main_ui.status_bar_progress_display import StatusBarProgressDisplay
|
|
26
|
-
from qcanvas.util import paths, settings
|
|
26
|
+
from qcanvas.util import auto_downloader, paths, settings
|
|
27
27
|
from qcanvas.util.qurl_util import file_url
|
|
28
28
|
from qcanvas.util.ui_tools import create_qaction
|
|
29
29
|
|
|
@@ -235,4 +235,4 @@ class QCanvasWindow(QMainWindow):
|
|
|
235
235
|
|
|
236
236
|
@asyncSlot()
|
|
237
237
|
async def _clear_new_items(self) -> None:
|
|
238
|
-
await self._reload(
|
|
238
|
+
await self._reload(empty_receipt())
|
qcanvas/ui/setup/setup_dialog.py
CHANGED
|
@@ -11,8 +11,8 @@ from qtpy.QtWidgets import *
|
|
|
11
11
|
|
|
12
12
|
import qcanvas.util.settings as settings
|
|
13
13
|
from qcanvas import icons
|
|
14
|
-
from qcanvas.util import is_url
|
|
15
14
|
from qcanvas.util.layouts import grid_layout_widget, layout
|
|
15
|
+
from qcanvas.util.url_checker import is_url
|
|
16
16
|
|
|
17
17
|
_logger = logging.getLogger(__name__)
|
|
18
18
|
|
qcanvas/util/__init__.py
CHANGED
qcanvas/util/auto_downloader.py
CHANGED
|
@@ -4,8 +4,7 @@ import logging
|
|
|
4
4
|
import qcanvas_backend.database.types as db
|
|
5
5
|
from qcanvas_backend.net.resources.download.resource_manager import ResourceManager
|
|
6
6
|
from qcanvas_backend.net.sync.sync_receipt import SyncReceipt
|
|
7
|
-
from qtpy.QtWidgets import QMessageBox
|
|
8
|
-
from qtpy.QtWidgets import QWidget
|
|
7
|
+
from qtpy.QtWidgets import QMessageBox, QWidget
|
|
9
8
|
|
|
10
9
|
from qcanvas.util import settings
|
|
11
10
|
|
qcanvas/util/paths.py
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import os
|
|
3
|
-
import platform
|
|
4
|
-
import sys
|
|
5
3
|
from pathlib import Path
|
|
6
4
|
|
|
7
5
|
import cachetools
|
|
8
6
|
import platformdirs
|
|
9
|
-
from qtpy.QtCore import
|
|
7
|
+
from qtpy.QtCore import QSettings
|
|
8
|
+
|
|
9
|
+
from qcanvas.util.runtime import *
|
|
10
10
|
|
|
11
11
|
_logger = logging.getLogger(__name__)
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
|
|
14
|
+
def ui_storage() -> Path:
|
|
15
|
+
return root() / ".UI"
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def data_storage() -> Path:
|
|
19
|
+
return root()
|
|
17
20
|
|
|
18
21
|
|
|
19
22
|
def client_settings() -> QSettings:
|
|
20
|
-
if
|
|
21
|
-
return QSettings(
|
|
22
|
-
str(Path(QDir.homePath()) / ".config" / "QCanvasTeam" / "canvas.ini"),
|
|
23
|
-
QSettings.Format.IniFormat,
|
|
24
|
-
)
|
|
23
|
+
if is_running_portable:
|
|
24
|
+
return QSettings("QCanvas.ini", QSettings.Format.IniFormat)
|
|
25
25
|
else:
|
|
26
26
|
return QSettings("QCanvasTeam", "QCanvas")
|
|
27
27
|
|
|
@@ -30,19 +30,12 @@ def client_settings() -> QSettings:
|
|
|
30
30
|
def root() -> Path:
|
|
31
31
|
root_path = Path()
|
|
32
32
|
|
|
33
|
-
if
|
|
33
|
+
if is_running_as_flatpak:
|
|
34
|
+
# Flatpak does not support portable mode
|
|
34
35
|
root_path = Path(os.environ["XDG_DATA_HOME"])
|
|
35
|
-
elif
|
|
36
|
+
elif not is_running_portable and is_running_as_compiled:
|
|
36
37
|
root_path = platformdirs.user_data_path("QCanvasReborn", "QCanvasTeam")
|
|
37
38
|
|
|
38
39
|
print("Root path", root_path.absolute())
|
|
39
40
|
_logger.debug("Root path %s", root_path.absolute())
|
|
40
41
|
return root_path
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
def ui_storage() -> Path:
|
|
44
|
-
return root() / ".UI"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
def data_storage() -> Path:
|
|
48
|
-
return root()
|
qcanvas/util/runtime.py
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import platform
|
|
3
|
+
import sys
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
|
|
6
|
+
is_running_portable = Path(".portable").exists()
|
|
7
|
+
is_running_on_windows = platform.system() == "Windows"
|
|
8
|
+
is_running_on_linux = platform.system() == "Linux"
|
|
9
|
+
_is_nuitka = "__compiled__" in globals()
|
|
10
|
+
_is_pyinstaller = getattr(sys, "frozen", False) and hasattr(sys, "_MEIPASS")
|
|
11
|
+
is_running_as_compiled = _is_nuitka or _is_pyinstaller
|
|
12
|
+
is_running_as_flatpak = os.environ.get("container", "") == "flatpak"
|
|
13
|
+
|
|
14
|
+
__all__ = [
|
|
15
|
+
"is_running_portable",
|
|
16
|
+
"is_running_as_flatpak",
|
|
17
|
+
"is_running_on_linux",
|
|
18
|
+
"is_running_as_compiled",
|
|
19
|
+
"is_running_on_windows",
|
|
20
|
+
]
|
|
@@ -4,20 +4,20 @@ qcanvas/backend_connectors/__init__.py,sha256=Wj8cmxQng3SSlmlXJyzHaPmvxbkauwsxIN
|
|
|
4
4
|
qcanvas/backend_connectors/frontend_resource_manager.py,sha256=87oszxCle0Y9AUAHH3wn_7oilY45ddMET-4EnpTtjn0,1322
|
|
5
5
|
qcanvas/backend_connectors/qcanvas_task_master.py,sha256=CTPBvf_9w-livscKNspnd98mNvFLYTYHef0RQSUkfFc,742
|
|
6
6
|
qcanvas/icons/__init__.py,sha256=eaZWyt-xEsLqRVI2HNvevgRhXUnM_oyDrT5hSyLM1eE,246
|
|
7
|
-
qcanvas/icons/file-download-failed.svg,sha256=
|
|
8
|
-
qcanvas/icons/file-downloaded.svg,sha256=
|
|
9
|
-
qcanvas/icons/file-not-downloaded.svg,sha256=
|
|
7
|
+
qcanvas/icons/file-download-failed.svg,sha256=lhDf8ul__T2ByRcd5KZicNtUVl4BdSqeZ3yOR6DvCLk,1091
|
|
8
|
+
qcanvas/icons/file-downloaded.svg,sha256=a6YO4kHpCEgVUStKADmNz0QgW5meiCQsrmY1cunQ4b8,1091
|
|
9
|
+
qcanvas/icons/file-not-downloaded.svg,sha256=7zl_Gmx2IHZrugFYAUjBCSwmfXM0pvlshj8GhewxY5Q,1091
|
|
10
10
|
qcanvas/icons/file-unknown.svg,sha256=9xlN244HJX3zM_MqdMTnNbKlqLjOFgCx3ZdM4Wc4zC0,1729
|
|
11
11
|
qcanvas/icons/icons.qrc,sha256=czwaoP0TNXGoH91cstRbdhvKnfyLlmAp-VmaZoBk0YY,280
|
|
12
12
|
qcanvas/icons/main_icon.svg,sha256=st2sfA8HIETmoacJ2Oq84iJzfnNHH-T03ijB-J419_s,16104
|
|
13
|
-
qcanvas/icons/rc_icons.py,sha256=
|
|
13
|
+
qcanvas/icons/rc_icons.py,sha256=e1jj_P3F2CDTyrlnk96-m4DtMy0a8WNMw8C_SwLWOfo,18387
|
|
14
14
|
qcanvas/icons/sync.svg,sha256=J-7_KnFbQL3uh-RrTy0_wSJUVW4Cc6ZSTacld6ULv1w,2829
|
|
15
15
|
qcanvas/run.py,sha256=lZZPpdlQWbcSJnhY2i2zJ1xizhdy1j2EoV1BUYVXkfw,548
|
|
16
16
|
qcanvas/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
17
|
qcanvas/ui/course_viewer/__init__.py,sha256=XkoFnh4ULw3_i-GDsOlueEWido0PkoDcN9_EX6-nkXY,76
|
|
18
|
-
qcanvas/ui/course_viewer/content_tree.py,sha256=
|
|
18
|
+
qcanvas/ui/course_viewer/content_tree.py,sha256=XsPyCDAD_g5dKRYRVpiKwRioLMcWAOGatI3po0QO7BU,4105
|
|
19
19
|
qcanvas/ui/course_viewer/course_tree.py,sha256=LkzquiAIKzFwB9dkOx-QmIp7CkKJ8R5Kk0aeYHQLu5s,2709
|
|
20
|
-
qcanvas/ui/course_viewer/course_viewer.py,sha256=
|
|
20
|
+
qcanvas/ui/course_viewer/course_viewer.py,sha256=uNnw2XRMXiBGyv2stfEqWcw7MpDDc6h8tGiMsq5oxS0,3551
|
|
21
21
|
qcanvas/ui/course_viewer/tabs/__init__.py,sha256=SlfWUzk6_E5uM9GIV-y9BVeKMwqn3pRx_xWhMyb1dfI,54
|
|
22
22
|
qcanvas/ui/course_viewer/tabs/assignment_tab/__init__.py,sha256=w936dW7za10Fh6rN0zVA-7Kyiup3kd6C-mPAFHtxmy0,42
|
|
23
23
|
qcanvas/ui/course_viewer/tabs/assignment_tab/assignment_tab.py,sha256=_de3IPBCe27Bt8MoabcX1ZchBbVb-_QHVeYMvL3wzr8,1986
|
|
@@ -29,7 +29,7 @@ qcanvas/ui/course_viewer/tabs/mail_tab/mail_tree.py,sha256=5yCLjkwFV1qIOq-NYeUds
|
|
|
29
29
|
qcanvas/ui/course_viewer/tabs/page_tab/__init__.py,sha256=lcafxlSEVZ0wqZySxT6hTrvExX-GU2AfcZQbp6W8haU,30
|
|
30
30
|
qcanvas/ui/course_viewer/tabs/page_tab/page_tab.py,sha256=cv-pCDri7thRJZv-gWUZrL2FUQAHe7vZthRAhejsqWY,771
|
|
31
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=
|
|
32
|
+
qcanvas/ui/course_viewer/tabs/resource_rich_browser.py,sha256=dTRsJO_xeo72vsX0FrT1XHfr9VlFjnM9woeFxVg0dDw,6649
|
|
33
33
|
qcanvas/ui/course_viewer/tabs/util.py,sha256=rUVEGSREV9vTFs4o3AD2OjaSFA-GPsmelxYWz0J8OP4,48
|
|
34
34
|
qcanvas/ui/main_ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
35
|
qcanvas/ui/main_ui/course_viewer_container.py,sha256=R3w0EImYQTUMPPtoaTIZZTf8MCMDC_5Ia_c-MBJ6-QQ,1912
|
|
@@ -38,23 +38,24 @@ qcanvas/ui/main_ui/options/auto_download_resources_option.py,sha256=W9BleGh6egfN
|
|
|
38
38
|
qcanvas/ui/main_ui/options/quick_sync_option.py,sha256=qEfmtLllO32ejc-bydCvFRjal5RUlk2HtC5Ld4mT7ss,753
|
|
39
39
|
qcanvas/ui/main_ui/options/sync_on_start_option.py,sha256=zFFAAyGZEa6qBchJJIm7bJpOwxcntnto9Ee-lzCiHX4,731
|
|
40
40
|
qcanvas/ui/main_ui/options/theme_selection_menu.py,sha256=MVudpolTToR1TRAtqfaFMUH__G0gc4oyqDAL5BH-7RY,1263
|
|
41
|
-
qcanvas/ui/main_ui/qcanvas_window.py,sha256=
|
|
41
|
+
qcanvas/ui/main_ui/qcanvas_window.py,sha256=aaN2gIyKpjcdd6NKp9E0DPt6YHBT-DX7RVRqnWSJVaQ,8554
|
|
42
42
|
qcanvas/ui/main_ui/status_bar_progress_display.py,sha256=ExFRWY1SPDS2t8CBOx80TlOdENrxXGnuv7ht-DPcnwY,4836
|
|
43
43
|
qcanvas/ui/memory_tree/__init__.py,sha256=-XLitM6teC0zmwPrGf-Q-A53-zgmIPASExdOtaLIvPU,107
|
|
44
44
|
qcanvas/ui/memory_tree/_tree_memory.py,sha256=CMKfCnrHj22ervaq7xB5U4AiKijYvghUK5ZL0MJIFmQ,1805
|
|
45
45
|
qcanvas/ui/memory_tree/memory_tree_widget.py,sha256=OT3TnYsUSbMowqR9my19QG4AuAdhTb29SGSa2406-SE,4432
|
|
46
46
|
qcanvas/ui/memory_tree/memory_tree_widget_item.py,sha256=JXk07AzrKsBnYAqhayIFYAwMfF_D_EfkfJY4Qyez47U,425
|
|
47
47
|
qcanvas/ui/setup/__init__.py,sha256=QWt2lEyLqWG5QC-BmCBlYyi0LZsBfsQYbP0XkvqA2f8,77
|
|
48
|
-
qcanvas/ui/setup/setup_checker.py,sha256=
|
|
49
|
-
qcanvas/ui/setup/setup_dialog.py,sha256=
|
|
50
|
-
qcanvas/util/__init__.py,sha256=
|
|
51
|
-
qcanvas/util/auto_downloader.py,sha256=
|
|
48
|
+
qcanvas/ui/setup/setup_checker.py,sha256=mcotxWlYtIK_eGzBadHvsxRFdc8PmxRxrUBo4dz1P6M,408
|
|
49
|
+
qcanvas/ui/setup/setup_dialog.py,sha256=1YJCnQZO8kLwAEQuOAlfqrQ2yjmTgze0FY8Q0cIa0Uo,8574
|
|
50
|
+
qcanvas/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
|
+
qcanvas/util/auto_downloader.py,sha256=WGawgc849qpPf7ufe_yxRYhwVf2Aj15wTAAQvToxmHg,1842
|
|
52
52
|
qcanvas/util/basic_fonts.py,sha256=1NK5_kejgH45mENwiTWvE5oOuAvGqWMX3hg9tTUCBi4,243
|
|
53
53
|
qcanvas/util/html_cleaner.py,sha256=O9_PhvZZw3RcPjdXZagAbNmp8Hfyq9fydBH-ee-DfII,615
|
|
54
54
|
qcanvas/util/layouts.py,sha256=7wQ0-DAbRHPPcfVIQoOmVhPdhGqcF-6qWE1-P86e7ys,1351
|
|
55
55
|
qcanvas/util/logs.py,sha256=VZKFITiW2WR2POEFVv5GRpEXic23Pzjehry-vH3g3Gk,138
|
|
56
|
-
qcanvas/util/paths.py,sha256=
|
|
56
|
+
qcanvas/util/paths.py,sha256=TzG5iy7A6ndzUdeV00lJKXq_gmbtooahueBjgvN02s8,989
|
|
57
57
|
qcanvas/util/qurl_util.py,sha256=NkskYvrMQJuYWMNF4DFQ4J5-YM5CGl5gHQKxJaAhHBE,197
|
|
58
|
+
qcanvas/util/runtime.py,sha256=EO1HFCN7dZbQtKHQOILuvjZFXGT7SzhlmPvU8ma95Z8,617
|
|
58
59
|
qcanvas/util/settings/__init__.py,sha256=ivc8bczhQdEJsWse6fc81Xyz0i2YX57pL4UubM3NJfw,228
|
|
59
60
|
qcanvas/util/settings/_client_settings.py,sha256=VpJ80rE04iB-1bsQLr6wWzD5fB8fp-goy62o7OGABWo,1119
|
|
60
61
|
qcanvas/util/settings/_mapped_setting.py,sha256=Z6635FfDll9cCLfSkVg-unsDLvUWuKT5MmxJEiUkd2k,1823
|
|
@@ -62,7 +63,7 @@ qcanvas/util/settings/_ui_settings.py,sha256=zlWMjpntuqm7ZN3aBEROGrXc4bhtKOfWijm
|
|
|
62
63
|
qcanvas/util/themes.py,sha256=BE6lMf0lVE-0G_QYhK5emMdtKG4lUJw76HFX4go7R80,473
|
|
63
64
|
qcanvas/util/ui_tools.py,sha256=bSM1xrmZPn847YEbXAC9VIAv--8hMLMWrsEMWGA5p3E,916
|
|
64
65
|
qcanvas/util/url_checker.py,sha256=gaV_KZZsG5bfJaGBv9jbHJjq0rVxIH55HRtucT6Qkx8,144
|
|
65
|
-
qcanvas-1.0.
|
|
66
|
-
qcanvas-1.0.
|
|
67
|
-
qcanvas-1.0.
|
|
68
|
-
qcanvas-1.0.
|
|
66
|
+
qcanvas-1.0.12.dist-info/METADATA,sha256=o55cj2OuPoVGQ3bGwotKkSx81z10sgd7dCBs0tq-XNw,1710
|
|
67
|
+
qcanvas-1.0.12.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
68
|
+
qcanvas-1.0.12.dist-info/entry_points.txt,sha256=46VbnhQ9w2CYdfhYcPfWgjXYHjsKshu0asQ1B_sAMac,44
|
|
69
|
+
qcanvas-1.0.12.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|