qcanvas 1.0.11__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.

@@ -1,6 +1,23 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
- <svg fill="#000000" width="800px" height="800px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg">
4
- <title>file-times</title>
5
- <path d="M26.731 9.902c-0.005-0.035-0.011-0.066-0.019-0.095l0.001 0.005c-0.031-0.134-0.094-0.249-0.182-0.342l0 0-8-8c-0.092-0.087-0.207-0.15-0.335-0.181l-0.005-0.001c-0.027-0.008-0.059-0.014-0.092-0.019l-0.003-0c-0.026-0.007-0.059-0.014-0.092-0.019l-0.004-0h-12c-0.414 0-0.75 0.336-0.75 0.75v0 28c0 0.414 0.336 0.75 0.75 0.75h20c0.414-0 0.75-0.336 0.75-0.75v0-20c-0.005-0.038-0.012-0.071-0.020-0.103l0.001 0.005zM24.189 9.25h-5.439v-5.439zM6.75 29.25v-26.5h10.5v7.25c0 0.414 0.336 0.75 0.75 0.75h7.25v18.5zM20.066 15.935c-0.136-0.136-0.324-0.22-0.531-0.22s-0.395 0.084-0.531 0.22v0l-3.004 3.004-3.005-3.004c-0.136-0.141-0.327-0.228-0.538-0.228-0.414 0-0.75 0.336-0.75 0.75 0 0.211 0.087 0.402 0.228 0.538l3.004 3.005-3.004 3.004c-0.136 0.136-0.22 0.324-0.22 0.531 0 0.415 0.336 0.751 0.751 0.751 0.207 0 0.395-0.084 0.53-0.219v0l3.005-3.005 3.004 3.005c0.136 0.136 0.324 0.22 0.531 0.22 0.415 0 0.751-0.336 0.751-0.751 0-0.207-0.084-0.395-0.22-0.531l-3.005-3.004 3.005-3.005c0.135-0.136 0.218-0.323 0.218-0.53s-0.083-0.394-0.218-0.53l0 0z"></path>
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
- <?xml version="1.0" encoding="utf-8"?>
2
- <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
- <svg fill="#000000" width="800px" height="800px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg">
4
- <title>file</title>
5
- <path d="M26.731 9.902c-0.005-0.035-0.011-0.066-0.019-0.095l0.001 0.005c-0.031-0.134-0.094-0.249-0.182-0.342l0 0-8-8c-0.092-0.087-0.207-0.15-0.335-0.181l-0.005-0.001c-0.027-0.008-0.059-0.014-0.092-0.019l-0.003-0c-0.026-0.007-0.059-0.014-0.092-0.019l-0.004-0h-12c-0.414 0-0.75 0.336-0.75 0.75v0 28c0 0.414 0.336 0.75 0.75 0.75h20c0.414-0 0.75-0.336 0.75-0.75v0-20c-0.005-0.038-0.012-0.071-0.020-0.103l0.001 0.005zM24.189 9.25h-5.439v-5.439zM6.75 29.25v-26.5h10.5v7.25c0 0.414 0.336 0.75 0.75 0.75h7.25v18.5z"></path>
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
- <?xml version="1.0" encoding="utf-8"?>
2
- <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
- <svg fill="#000000" width="800px" height="800px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg">
4
- <title>file-arrow-down</title>
5
- <path d="M26.731 9.902c-0.005-0.035-0.011-0.066-0.019-0.095l0.001 0.005c-0.031-0.134-0.094-0.249-0.182-0.342l0 0-8-8c-0.092-0.087-0.207-0.15-0.335-0.181l-0.005-0.001c-0.027-0.008-0.059-0.014-0.092-0.019l-0.003-0c-0.026-0.007-0.059-0.014-0.092-0.019l-0.004-0h-12c-0.414 0-0.75 0.336-0.75 0.75v0 28c0 0.414 0.336 0.75 0.75 0.75h20c0.414-0 0.75-0.336 0.75-0.75v0-20c-0.005-0.038-0.012-0.071-0.020-0.103l0.001 0.005zM24.189 9.25h-5.439v-5.439zM6.75 29.25v-26.5h10.5v7.25c0 0.414 0.336 0.75 0.75 0.75h7.25v18.5zM20.469 20.91l-3.719 3.721v-10.676c0-0.414-0.336-0.75-0.75-0.75s-0.75 0.336-0.75 0.75v0 10.675l-3.72-3.72c-0.136-0.134-0.322-0.218-0.528-0.218-0.415 0-0.751 0.336-0.751 0.751 0 0.207 0.083 0.394 0.219 0.529l5 5c0.026 0.026 0.065 0.017 0.093 0.038 0.052 0.040 0.088 0.098 0.15 0.124 0.085 0.035 0.184 0.056 0.287 0.057h0c0 0 0 0 0 0 0.207 0 0.394-0.084 0.53-0.219l5.001-5c0.136-0.136 0.22-0.324 0.22-0.531 0-0.415-0.336-0.751-0.751-0.751-0.207 0-0.395 0.084-0.531 0.22v0z"></path>
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\x04\xf2\
9
+ \x00\x00\x04A\
10
10
  <\
11
- ?xml version=\x221.\
12
- 0\x22 encoding=\x22utf\
13
- -8\x22?>\x0d\x0a<!-- Uplo\
14
- aded to: SVG Rep\
15
- o, www.svgrepo.c\
16
- om, Generator: S\
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 fil\
19
- l=\x22#000000\x22 widt\
20
- h=\x22800px\x22 height\
21
- =\x22800px\x22 viewBox\
22
- =\x220 0 32 32\x22 ver\
23
- sion=\x221.1\x22 xmlns\
24
- =\x22http://www.w3.\
25
- org/2000/svg\x22>\x0d\x0a\
26
- <title>file-arro\
27
- w-down</title>\x0d\x0a\
28
- <path d=\x22M26.731\
29
- 9.902c-0.005-0.\
30
- 035-0.011-0.066-\
31
- 0.019-0.095l0.00\
32
- 1 0.005c-0.031-0\
33
- .134-0.094-0.249\
34
- -0.182-0.342l0 0\
35
- -8-8c-0.092-0.08\
36
- 7-0.207-0.15-0.3\
37
- 35-0.181l-0.005-\
38
- 0.001c-0.027-0.0\
39
- 08-0.059-0.014-0\
40
- .092-0.019l-0.00\
41
- 3-0c-0.026-0.007\
42
- -0.059-0.014-0.0\
43
- 92-0.019l-0.004-\
44
- 0h-12c-0.414 0-0\
45
- .75 0.336-0.75 0\
46
- .75v0 28c0 0.414\
47
- 0.336 0.75 0.75\
48
- 0.75h20c0.414-0\
49
- 0.75-0.336 0.75\
50
- -0.75v0-20c-0.00\
51
- 5-0.038-0.012-0.\
52
- 071-0.020-0.103l\
53
- 0.001 0.005zM24.\
54
- 189 9.25h-5.439v\
55
- -5.439zM6.75 29.\
56
- 25v-26.5h10.5v7.\
57
- 25c0 0.414 0.336\
58
- 0.75 0.75 0.75h\
59
- 7.25v18.5zM20.46\
60
- 9 20.91l-3.719 3\
61
- .721v-10.676c0-0\
62
- .414-0.336-0.75-\
63
- 0.75-0.75s-0.75 \
64
- 0.336-0.75 0.75v\
65
- 0 10.675l-3.72-3\
66
- .72c-0.136-0.134\
67
- -0.322-0.218-0.5\
68
- 28-0.218-0.415 0\
69
- -0.751 0.336-0.7\
70
- 51 0.751 0 0.207\
71
- 0.083 0.394 0.2\
72
- 19 0.529l5 5c0.0\
73
- 26 0.026 0.065 0\
74
- .017 0.093 0.038\
75
- 0.052 0.040 0.0\
76
- 88 0.098 0.15 0.\
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?>\x0d\x0a<!-- Uplo\
96
- aded to: SVG Rep\
97
- o, www.svgrepo.c\
98
- om, Generator: S\
99
- VG Repo Mixer To\
100
- ols -->\x0a<svg fil\
101
- l=\x22#000000\x22 widt\
102
- h=\x22800px\x22 height\
103
- =\x22800px\x22 viewBox\
104
- =\x220 0 32 32\x22 ver\
105
- sion=\x221.1\x22 xmlns\
106
- =\x22http://www.w3.\
107
- org/2000/svg\x22>\x0d\x0a\
108
- <title>question<\
109
- /title>\x0d\x0a<path d\
110
- =\x22M19.943 5.251c\
111
- -1.145-0.635-2.5\
112
- 11-1.008-3.964-1\
113
- .008-1.461 0-2.8\
114
- 34 0.378-4.026 1\
115
- .040l0.042-0.022\
116
- c-1.649 0.916-2.\
117
- 746 2.648-2.746 \
118
- 4.635 0 0.037 0 \
119
- 0.074 0.001 0.11\
120
- 1l-0-0.006c0.001\
121
- 0.413 0.336 0.7\
122
- 47 0.75 0.747 0 \
123
- 0 0 0 0 0h-0c0.4\
124
- 07-0.021 0.731-0\
125
- .346 0.75-0.751l\
126
- 0-0.002c-0.001-0\
127
- .026-0.001-0.058\
128
- -0.001-0.089 0-1\
129
- .441 0.8-2.694 1\
130
- .98-3.341l0.020-\
131
- 0.010c0.934-0.51\
132
- 1 2.047-0.812 3.\
133
- 23-0.812 1.178 0\
134
- 2.287 0.298 3.2\
135
- 55 0.824l-0.036-\
136
- 0.018c1.23 0.657\
137
- 2.053 1.933 2.0\
138
- 53 3.401 0 0.017\
139
- -0 0.033-0 0.050\
140
- l0-0.003c0.033 0\
141
- .19 0.051 0.408 \
142
- 0.051 0.631 0 1.\
143
- 699-1.084 3.145-\
144
- 2.598 3.684l-0.0\
145
- 27 0.008c-2.303 \
146
- 1.102-3.424 3.28\
147
- 5-3.426 6.677 0 \
148
- 0 0 0 0 0.001 0 \
149
- 0.414 0.335 0.74\
150
- 9 0.749 0.749h0.\
151
- 001c0.414-0 0.75\
152
- -0.336 0.75-0.75\
153
- v0c0.002-2.793 0\
154
- .819-4.485 2.586\
155
- -5.329 2.037-0.7\
156
- 83 3.457-2.725 3\
157
- .457-4.997 0-0.2\
158
- 38-0.016-0.473-0\
159
- .046-0.703l0.003\
160
- 0.027c0-0.017 0\
161
- -0.037 0-0.057 0\
162
- -2.018-1.123-3.7\
163
- 74-2.779-4.676l-\
164
- 0.028-0.014zM15.\
165
- 46 25.459c-0.123\
166
- 0.145-0.198 0.3\
167
- 34-0.2 0.541v0c-\
168
- 0.001 0.016-0.00\
169
- 2 0.034-0.002 0.\
170
- 052 0 0.082 0.01\
171
- 5 0.16 0.044 0.2\
172
- 31l-0.002-0.004c\
173
- 0.039 0.094 0.09\
174
- 3 0.173 0.16 0.2\
175
- 4l0 0c0.071 0.07\
176
- 6 0.158 0.137 0.\
177
- 255 0.178l0.005 \
178
- 0.002c0.084 0.02\
179
- 6 0.18 0.041 0.2\
180
- 8 0.041s0.196-0.\
181
- 015 0.287-0.043l\
182
- -0.007 0.002c0.1\
183
- 02-0.043 0.189-0\
184
- .104 0.26-0.179l\
185
- 0-0c0.067-0.067 \
186
- 0.12-0.147 0.157\
187
- -0.235l0.002-0.0\
188
- 05c0.038-0.079 0\
189
- .061-0.173 0.061\
190
- -0.271 0-0.003-0\
191
- -0.006-0-0.009v0\
192
- c-0.010-0.209-0.\
193
- 092-0.397-0.221-\
194
- 0.542l0.001 0.00\
195
- 1c-0.145-0.121-0\
196
- .334-0.195-0.54-\
197
- 0.195s-0.395 0.0\
198
- 74-0.541 0.196l0\
199
- .001-0.001z\x22></p\
200
- ath>\x0d\x0a</svg>\
201
- \x00\x00\x03\x11\
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
- ?xml version=\x221.\
204
- 0\x22 encoding=\x22utf\
205
- -8\x22?>\x0d\x0a<!-- Uplo\
206
- aded to: SVG Rep\
207
- o, www.svgrepo.c\
208
- om, Generator: S\
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 fil\
211
- l=\x22#000000\x22 widt\
212
- h=\x22800px\x22 height\
213
- =\x22800px\x22 viewBox\
214
- =\x220 0 32 32\x22 ver\
215
- sion=\x221.1\x22 xmlns\
216
- =\x22http://www.w3.\
217
- org/2000/svg\x22>\x0d\x0a\
218
- <title>file</tit\
219
- le>\x0d\x0a<path d=\x22M2\
220
- 6.731 9.902c-0.0\
221
- 05-0.035-0.011-0\
222
- .066-0.019-0.095\
223
- l0.001 0.005c-0.\
224
- 031-0.134-0.094-\
225
- 0.249-0.182-0.34\
226
- 2l0 0-8-8c-0.092\
227
- -0.087-0.207-0.1\
228
- 5-0.335-0.181l-0\
229
- .005-0.001c-0.02\
230
- 7-0.008-0.059-0.\
231
- 014-0.092-0.019l\
232
- -0.003-0c-0.026-\
233
- 0.007-0.059-0.01\
234
- 4-0.092-0.019l-0\
235
- .004-0h-12c-0.41\
236
- 4 0-0.75 0.336-0\
237
- .75 0.75v0 28c0 \
238
- 0.414 0.336 0.75\
239
- 0.75 0.75h20c0.\
240
- 414-0 0.75-0.336\
241
- 0.75-0.75v0-20c\
242
- -0.005-0.038-0.0\
243
- 12-0.071-0.020-0\
244
- .103l0.001 0.005\
245
- zM24.189 9.25h-5\
246
- .439v-5.439zM6.7\
247
- 5 29.25v-26.5h10\
248
- .5v7.25c0 0.414 \
249
- 0.336 0.75 0.75 \
250
- 0.75h7.25v18.5z\x22\
251
- ></path>\x0d\x0a</svg>\
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\x05+\
262
+ \x00\x00\x04A\
254
263
  <\
255
- ?xml version=\x221.\
256
- 0\x22 encoding=\x22utf\
257
- -8\x22?>\x0d\x0a<!-- Uplo\
258
- aded to: SVG Rep\
259
- o, www.svgrepo.c\
260
- om, Generator: S\
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 fil\
263
- l=\x22#000000\x22 widt\
264
- h=\x22800px\x22 height\
265
- =\x22800px\x22 viewBox\
266
- =\x220 0 32 32\x22 ver\
267
- sion=\x221.1\x22 xmlns\
268
- =\x22http://www.w3.\
269
- org/2000/svg\x22>\x0d\x0a\
270
- <title>file-time\
271
- s</title>\x0d\x0a<path\
272
- d=\x22M26.731 9.90\
273
- 2c-0.005-0.035-0\
274
- .011-0.066-0.019\
275
- -0.095l0.001 0.0\
276
- 05c-0.031-0.134-\
277
- 0.094-0.249-0.18\
278
- 2-0.342l0 0-8-8c\
279
- -0.092-0.087-0.2\
280
- 07-0.15-0.335-0.\
281
- 181l-0.005-0.001\
282
- c-0.027-0.008-0.\
283
- 059-0.014-0.092-\
284
- 0.019l-0.003-0c-\
285
- 0.026-0.007-0.05\
286
- 9-0.014-0.092-0.\
287
- 019l-0.004-0h-12\
288
- c-0.414 0-0.75 0\
289
- .336-0.75 0.75v0\
290
- 28c0 0.414 0.33\
291
- 6 0.75 0.75 0.75\
292
- h20c0.414-0 0.75\
293
- -0.336 0.75-0.75\
294
- v0-20c-0.005-0.0\
295
- 38-0.012-0.071-0\
296
- .020-0.103l0.001\
297
- 0.005zM24.189 9\
298
- .25h-5.439v-5.43\
299
- 9zM6.75 29.25v-2\
300
- 6.5h10.5v7.25c0 \
301
- 0.414 0.336 0.75\
302
- 0.75 0.75h7.25v\
303
- 18.5zM20.066 15.\
304
- 935c-0.136-0.136\
305
- -0.324-0.22-0.53\
306
- 1-0.22s-0.395 0.\
307
- 084-0.531 0.22v0\
308
- l-3.004 3.004-3.\
309
- 005-3.004c-0.136\
310
- -0.141-0.327-0.2\
311
- 28-0.538-0.228-0\
312
- .414 0-0.75 0.33\
313
- 6-0.75 0.75 0 0.\
314
- 211 0.087 0.402 \
315
- 0.228 0.538l3.00\
316
- 4 3.005-3.004 3.\
317
- 004c-0.136 0.136\
318
- -0.22 0.324-0.22\
319
- 0.531 0 0.415 0\
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\xfb\
584
- \x00\x00\x01\x90\xb8\xf1\xdc\xe5\
585
- \x00\x00\x00Z\x00\x00\x00\x00\x00\x01\x00\x00\x0b\xb7\
586
- \x00\x00\x01\x90\xd5,g@\
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\x90\xd59\xb8\x92\
589
- \x00\x00\x004\x00\x00\x00\x00\x00\x01\x00\x00\x04\xf6\
590
- \x00\x00\x01\x90\xd5;\x8d>\
591
- \x00\x00\x00\x86\x00\x00\x00\x00\x00\x01\x00\x00\x0e\xcc\
592
- \x00\x00\x01\x90\xd59\x5c\xa2\
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
- self.setMaximumWidth(max_width)
58
- self.setMinimumWidth(min_width)
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,10 +78,6 @@ 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
- # raise Exception("Looks like you forgot to update the other numbers??????"")
89
- # self._highlight_tab(0)
90
-
91
81
  if len(updates.updated_pages) > 0:
92
82
  self._highlight_tab(0)
93
83
 
@@ -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(doc, resource_id)
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(self, doc: BeautifulSoup, resource_id: str) -> 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, auto_downloader
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(None)
238
+ await self._reload(empty_receipt())
@@ -1,7 +1,7 @@
1
1
  import logging
2
2
 
3
3
  import qcanvas.util.settings as settings
4
- from qcanvas.util import is_url
4
+ from qcanvas.util.url_checker import is_url
5
5
 
6
6
  _logger = logging.getLogger(__name__)
7
7
 
@@ -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
@@ -1,2 +0,0 @@
1
- # todo remove this
2
- from .url_checker import is_url
@@ -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 QDir, QSettings
7
+ from qtpy.QtCore import QSettings
8
+
9
+ from qcanvas.util.runtime import *
10
10
 
11
11
  _logger = logging.getLogger(__name__)
12
12
 
13
- _is_running_on_windows = platform.system() == "Windows"
14
- _is_running_on_linux = platform.system() == "Linux"
15
- _is_running_as_pyinstaller = getattr(sys, "frozen", False) and hasattr(sys, "_MEIPASS")
16
- _is_running_as_flatpak = os.environ.get("container", "") == "flatpak"
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 _is_running_as_pyinstaller and _is_running_on_windows:
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 _is_running_as_flatpak:
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 _is_running_as_pyinstaller:
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()
@@ -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
+ ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qcanvas
3
- Version: 1.0.11
3
+ Version: 1.0.12
4
4
  Summary: QCanvas is a desktop client for Canvas LMS.
5
5
  Author: QCanvas
6
6
  Author-email: QCanvas@noreply.codeberg.org
@@ -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=b1Nx5mW_dbh3nuex4e-11btcGILLg59PHUG5lV6bc2U,1327
8
- qcanvas/icons/file-downloaded.svg,sha256=ymf1NU5uvKZq41kNVTtKkUoIzUE3pbHmx5IvwPYoyiU,789
9
- qcanvas/icons/file-not-downloaded.svg,sha256=TVpIZYDUfOw3S0cmXR3FawiCp0Y_PTSR4XKwrsy1qOs,1270
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=Ankeu0oWJk-1qLGVLxmiK5Kt1LVNyDmpR8jJZzOG5gQ,18194
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=sxYcNzyVUbZe-Nmoz7FXvmb9J6bNwqi8G7xZOtVqKhQ,3993
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=X-bughys3-6MmrRb7-9vVgRixDZbzKBj66AeabJzmDo,3970
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=422vPQF9afS_tLFqakMqk0qf-KR4N0gm9ytT5hVFF6I,6278
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=LXl6FQHSy6Lad1JmGSSoyqMsMxGUThku0QUQIqnuVIo,8543
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=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
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=uEV4AJFaWtP7hbie7H6-MYnCUE4_IJl0fkuxuZVMffA,1306
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.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,,
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,,