]> git.immae.eu Git - perso/Immae/Projets/Python/MusicSampler.git/blob - music_sampler/music_sampler.kv
afb99e411907a9e0c7de411bdb9f98a3f2d5f68a
[perso/Immae/Projets/Python/MusicSampler.git] / music_sampler / music_sampler.kv
1 #:import math math
2 #:import h music_sampler
3
4 <Key>:
5 pad_col_sep: 0 if not self.pad_cols else self.parent.pad_x
6 pad_cols: False
7
8 y: (self.parent.top-self.parent.y) - (self.row) * self.parent.key_size - (self.row - 1) * self.parent.key_sep
9 x: (self.col - 1) * self.parent.key_size + int(self.col - 1) * self.parent.key_sep + self.pad_col_sep
10 size_hint: None, None
11 enabled: True
12 line_width: 2
13 row: 1
14 col: 0
15 key_code: 0
16 key_sym: ""
17 key_width: 1
18 key_height: 1
19 width: self.key_width * (self.parent.key_size + self.parent.key_sep) - self.parent.key_sep
20 height: self.key_height * (self.parent.key_size + self.parent.key_sep) - self.parent.key_sep
21 canvas.before:
22 Color:
23 rgba: self.color
24 RoundedRectangle:
25 pos: self.x, self.y
26 size: self.size
27 canvas:
28 Color:
29 rgba: self.line_color
30 Line:
31 rounded_rectangle: self.x + self.line_width, self.y + self.line_width, self.width - 2 * self.line_width, self.height - 2 * self.line_width, 10
32 width: self.line_width
33 Color:
34 rgba: self.line_cross_color
35 Line:
36 points: self.x + self.line_width + 3, self.y + self.line_width + 3, self.x + self.width - 2 * self.line_width - 3, self.y + self.height - 2 * self.line_width - 3
37 width: self.line_width
38 Line:
39 points: self.x + self.line_width + 3, self.y + self.height - 2 * self.line_width - 3, self.x + self.width - 2 * self.line_width - 3, self.y + self.line_width + 3
40 width: self.line_width
41 Label:
42 id: key_label
43 font_name: "Ubuntu"
44 bold: True
45 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size))
46 color: 0, 0, 0, 1
47 text: self.parent.key_sym
48 text_size: self.parent.width,self.font_size
49 shorten: True
50 shorten_from: "right"
51 split_str: ""
52 center_x: self.parent.x + self.texture_size[0] /2 + 5
53 center_y: self.parent.y + self.parent.height - self.texture_size[1] /2 - 5
54 Label:
55 id: key_description_title
56 font_name: "Ubuntu"
57 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size / 2))
58 color: 0, 0, 0, 1
59 text: self.parent.description_title
60 text_size: self.parent.width - 2*self.parent.line_width, self.font_size
61 halign: "right"
62 valign: "middle"
63 center_x: self.parent.x + self.texture_size[0] /2
64 center_y: self.parent.y + self.parent.height - self.texture_size[1] /2 - 5
65 Label:
66 id: key_description
67 font_name: "Ubuntu"
68 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size / 2))
69 color: 0, 0, 0, 1
70 text: "\n".join(self.parent.description)
71 text_size: 2 * self.parent.width,self.parent.height - key_label.font_size
72 halign: "left"
73 valign: "middle"
74 pos: self.parent.x + 2 * self.parent.line_width + 2, self.parent.y
75 size_hint: None, None
76 size: 2 * self.parent.width - 2 * self.parent.line_width, self.parent.height - key_label.font_size
77
78 <Screen>:
79 canvas:
80 Color:
81 rgba: 229/255, 228/255, 226/255, 1
82 Rectangle:
83 pos: 0, 0
84 size: self.width, self.height
85
86 key_size: int( (3 * self.width - 16) / 56)
87 key_sep: int( self.key_size / 24)
88 key_pad_sep: int( self.key_size / 7) + 1
89
90 border: (self.width - self.key_size * 18 - self.key_sep * 16 - self.key_pad_sep)/ 2
91
92 mapping_height: self.key_size * 6 + self.key_sep * 5
93 mapping_width: self.key_size * 18 + self.key_sep * 16 + self.key_pad_sep
94 mapping_x: self.border
95 mapping_y: self.top - self.mapping_height - self.border
96
97 key_list_width: 4 * (mock_ubuntu_regular.width or 0)
98 key_list_height: self.height - self.mapping_height - 3 * self.border
99 key_list_x: (self.action_list_width or 0) + 2 * self.border
100 key_list_y: self.border
101
102 action_list_height: self.height - self.mapping_height - 3 * self.border
103 action_list_width: 3 * self.width / 4 - self.key_list_width - self.border
104 action_list_x: self.border
105 action_list_y: self.border
106
107 play_list_height: self.action_list_height
108 play_list_width: self.width - self.key_list_width - self.action_list_width - 4* self.border
109 play_list_y: self.border
110 play_list_x: self.action_list_width + self.key_list_width + 3 * self.border
111
112 max_height: max(mock_symbola.height, mock_ubuntu_regular.height, mock_ubuntu_bold.height)
113 min_height: min(mock_symbola.height, mock_ubuntu_regular.height, mock_ubuntu_bold.height)
114 symbola_line_height: self.min_height / max(mock_symbola.height,1)
115 ubuntu_regular_line_height: self.min_height / max(mock_ubuntu_regular.height,1)
116 ubuntu_bold_line_height: self.min_height / max(mock_ubuntu_bold.height,1)
117
118 Label:
119 id: mock_symbola
120 font_name: "Symbola"
121 font_size: math.ceil(2 * math.sqrt(self.parent.key_size or 10))
122 color: 0, 0, 0, 0
123 text: "A"
124 text_size: None, None
125 size_hint: None, None
126 size: self.texture_size
127 Label:
128 id: mock_ubuntu_regular
129 font_name: "Ubuntu"
130 font_size: math.ceil(2 * math.sqrt(self.parent.key_size or 10))
131 color: 0, 0, 0, 0
132 text: "A"
133 text_size: None, None
134 size_hint: None, None
135 size: self.texture_size
136 Label:
137 id: mock_ubuntu_bold
138 font_name: "Ubuntu"
139 bold: True
140 font_size: math.ceil(2 * math.sqrt(self.parent.key_size or 10))
141 color: 0, 0, 0, 0
142 text: "A"
143 text_size: None, None
144 size_hint: None, None
145 size: self.texture_size
146
147 Mapping:
148 id: Mapping
149 pos: self.parent.mapping_x, self.parent.mapping_y
150 size: self.parent.mapping_width, self.parent.mapping_height
151
152 key_size: self.parent.key_size
153 key_sep: self.parent.key_sep
154 key_pad_sep: self.parent.key_pad_sep
155 pad_x: self.key_size * 15 + 14 * self.key_sep + self.key_pad_sep
156 ActionList:
157 id: ActionList
158 pos: self.parent.action_list_x, self.parent.action_list_y
159 size: self.parent.action_list_width, self.parent.action_list_height
160 KeyList:
161 id: KeyList
162 pos: self.parent.key_list_x, self.parent.key_list_y
163 size: self.parent.key_list_width, self.parent.key_list_height
164 PlayList:
165 id: PlayList
166 pos: self.parent.play_list_x, self.parent.play_list_y
167 size: self.parent.play_list_width, self.parent.play_list_height
168
169 <KeyList>:
170 size_hint: None, None
171 canvas:
172 Color:
173 rgba: 250./255, 250./255, 250./255, 1
174 Rectangle:
175 pos: 0, 0
176 size: self.width, self.height
177 Label:
178 id: key_list_first
179 font_name: "Ubuntu"
180 bold: True
181 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size or 10))
182 color: 0, 0, 0, 1
183 text: self.parent.first_key
184 text_size: None, None
185 valign: "top"
186 halign: "center"
187 size_hint: None, None
188 size: self.parent.width, self.texture_size[1]
189 pos: 0, self.parent.height - self.height
190 Label:
191 id: key_list_second
192 font_name: "Ubuntu"
193 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size or 10))
194 color: 0, 0, 0, 1
195 text: self.parent.second_key
196 text_size: None, None
197 valign: "top"
198 halign: "center"
199 size_hint: None, None
200 size: self.parent.width, self.texture_size[1]
201 pos: 0, self.parent.height - key_list_first.height - self.height
202 Label:
203 id: key_list_third
204 font_name: "Ubuntu"
205 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size or 10))
206 color: 0, 0, 0, 0.75
207 text: self.parent.third_key
208 text_size: None, None
209 valign: "top"
210 halign: "center"
211 size_hint: None, None
212 size: self.parent.width, self.texture_size[1]
213 pos: 0, self.parent.height - key_list_first.height - key_list_second.height - self.height
214 Label:
215 id: key_list_rest
216 font_name: "Ubuntu"
217 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size or 10))
218 color: 0, 0, 0, 0.5
219 text: "\n".join(self.parent.keylist[3:])
220 text_size: None, None
221 valign: "top"
222 halign: "center"
223 size_hint: None, None
224 size: self.parent.width, self.texture_size[1]
225 pos: 0, self.parent.height - key_list_first.height - key_list_second.height - key_list_third.height - self.height
226
227 <ActionList>:
228 size_hint: None, None
229 labels_height: self.parent.max_height or 1
230 canvas:
231 Color:
232 rgba: 250./255, 250./255, 250./255, 1
233 Rectangle:
234 pos: 0, 0
235 size: self.width, self.height
236 Label:
237 id: action_list_title
238 font_name: "Ubuntu"
239 bold: True
240 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size or 10))
241 color: 0, 0, 0, 1
242 text: self.parent.action_title
243 text_size: None, self.parent.height
244 halign: "left"
245 valign: "top"
246 size_hint: None, None
247 size: self.texture_size[0], self.parent.height
248 ActionListIcons:
249 orientation: 'lr-tb'
250 size_hint: 0.02, 0.9
251 pos_hint: { 'x': 0, 'top': 0.9 }
252 ActionListDescriptions:
253 orientation: 'lr-tb'
254 size_hint: 0.98, 0.9
255 pos_hint: { 'x': 0.02, 'top': 0.9 }
256
257 <ActionListIcon>:
258 font_name: "Symbola"
259 color: 0, 0, 0, 1
260 text_size: None, None
261 halign: "left"
262 size_hint: None, None
263 width: self.texture_size[0]
264
265 <ActionListDescription>:
266 font_name: "Ubuntu"
267 color: 0, 0, 0, 1
268 text_size: self.width, None
269 shorten: True
270 shorten_from: "right"
271 split_str: ""
272 halign: "left"
273 size_hint: 1, None
274
275 <PlayList>:
276 size_hint: None, None
277 labels_height: self.parent.max_height or 1
278 canvas:
279 Color:
280 rgba: 250./255, 250./255, 250./255, 1
281 Rectangle:
282 pos: 0, 0
283 size: self.width, self.height
284 PlayListIcons:
285 orientation: 'lr-tb'
286 size_hint: 0.05, 1
287 pos_hints: { 'x': 0, 'top': 0 }
288 PlayListNames:
289 orientation: 'lr-tb'
290 pos_hint: { 'x': 0.05, 'bottom': 0 }
291 size_hint: 0.65, 1
292 PlayListTimes:
293 orientation: 'lr-tb'
294 pos_hint: { 'x': 0.7, 'bottom': 0 }
295 size_hint: 0.30, 1
296
297 <PlayListIcon>:
298 font_name: "Symbola"
299 color: 0, 0, 0, 1
300 text_size: None, None
301 halign: "left"
302 size_hint: None, None
303 width: self.texture_size[0]
304
305 <PlayListName>:
306 font_name: "Ubuntu"
307 color: 0, 0, 0, 1
308 text_size: self.width, None
309 shorten: True
310 shorten_from: "right"
311 split_str: ""
312 halign: "left"
313 size_hint: 1, None
314
315 <PlayListTime>:
316 canvas.before:
317 Color:
318 rgba: 250./255, 250./255, 250./255, 1
319 Rectangle:
320 pos: self.pos
321 size: self.width, self.height
322 font_name: "Ubuntu"
323 color: 0, 0, 0, 1
324 text_size: None, None
325 halign: "left"
326 size_hint: None, None
327 width: self.texture_size[0]
328
329 <Mapping>:
330 size_hint: None, None
331 key_size: 48
332 key_sep: 2
333 key_pad_sep: 7
334 pad_x: 755
335 canvas:
336 Color:
337 rgba: 250./255, 250./255, 250./255, 1
338 Rectangle:
339 pos: 0, 0
340 size: self.width, self.height
341 Color:
342 rgba: self.ready_color
343 Ellipse:
344 pos: self.width - self.key_size / 2, self.height - self.key_size /2
345 size: self.key_size / 3, self.key_size / 3
346 Label:
347 font_name: "Ubuntu"
348 font_size: math.ceil(2 * math.sqrt(self.parent.key_size or 10))
349 color: 0, 0, 0, 1
350 text: "volume: {}%".format(self.parent.master_volume)
351 valign: "top"
352 size_hint: None, None
353 size: self.texture_size[0], self.texture_size[1]
354 x: self.parent.width - self.width - 2 * self.parent.key_size / 3
355 center_y: self.parent.height - self.height
356 Key:
357 id: Key_27
358 key_code: 27
359 key_sym: "ESC"
360 row: 1
361 col: 1
362 Key:
363 id: Key_282
364 key_code: 282
365 key_sym: "F1"
366 row: 1
367 col: 3
368 Key:
369 id: Key_283
370 key_code: 283
371 key_sym: "F2"
372 row: 1
373 col: 4
374 Key:
375 id: Key_284
376 key_code: 284
377 key_sym: "F3"
378 row: 1
379 col: 5
380 Key:
381 id: Key_285
382 key_code: 285
383 key_sym: "F4"
384 row: 1
385 col: 6
386
387 Key:
388 id: Key_286
389 key_code: 286
390 key_sym: "F5"
391 row: 1
392 col: 7.5
393 Key:
394 id: Key_287
395 key_code: 287
396 key_sym: "F6"
397 row: 1
398 col: 8.5
399 Key:
400 id: Key_288
401 key_code: 288
402 key_sym: "F7"
403 row: 1
404 col: 9.5
405 Key:
406 id: Key_289
407 key_code: 289
408 key_sym: "F8"
409 row: 1
410 col: 10.5
411
412 Key:
413 id: Key_290
414 key_code: 290
415 key_sym: "F9"
416 row: 1
417 col: 12
418 Key:
419 id: Key_291
420 key_code: 291
421 key_sym: "F10"
422 row: 1
423 col: 13
424 Key:
425 id: Key_292
426 key_code: 292
427 key_sym: "F11"
428 row: 1
429 col: 14
430 Key:
431 id: Key_293
432 key_code: 293
433 key_sym: "F12"
434 row: 1
435 col: 15
436
437 Key:
438 id: Key_178
439 key_code: 178
440 key_sym: "ยฒ"
441 row: 2
442 col: 1
443 Key:
444 id: Key_38
445 key_code: 38
446 key_sym: "&"
447 row: 2
448 col: 2
449 Key:
450 id: Key_233
451 key_code: 233
452 key_sym: "รฉ"
453 row: 2
454 col: 3
455 Key:
456 id: Key_34
457 key_code: 34
458 key_sym: '"'
459 row: 2
460 col: 4
461 Key:
462 id: Key_39
463 key_code: 39
464 key_sym: "'"
465 row: 2
466 col: 5
467 Key:
468 id: Key_40
469 key_code: 40
470 key_sym: "("
471 row: 2
472 col: 6
473 Key:
474 id: Key_45
475 key_code: 45
476 key_sym: "-"
477 row: 2
478 col: 7
479 Key:
480 id: Key_232
481 key_code: 232
482 key_sym: "รจ"
483 row: 2
484 col: 8
485 Key:
486 id: Key_95
487 key_code: 95
488 key_sym: "_"
489 row: 2
490 col: 9
491 Key:
492 id: Key_231
493 key_code: 231
494 key_sym: "รง"
495 row: 2
496 col: 10
497 Key:
498 id: Key_224
499 key_code: 224
500 key_sym: "ร "
501 row: 2
502 col: 11
503 Key:
504 id: Key_41
505 key_code: 41
506 key_sym: ")"
507 row: 2
508 col: 12
509 Key:
510 id: Key_61
511 key_code: 61
512 key_sym: "="
513 row: 2
514 col: 13
515 Key:
516 id: Key_8
517 key_code: 8
518 key_sym: "<-"
519 row: 2
520 col: 14
521 key_width: 2
522 Key:
523 id: Key_9
524 key_code: 9
525 key_sym: "tab"
526 row: 3
527 col: 1
528 key_width: 1.48
529 Key:
530 id: Key_97
531 key_code: 97
532 key_sym: "a"
533 row: 3
534 col: 2.5
535 Key:
536 id: Key_122
537 key_code: 122
538 key_sym: "z"
539 row: 3
540 col: 3.5
541 Key:
542 id: Key_101
543 key_code: 101
544 key_sym: "e"
545 row: 3
546 col: 4.5
547 Key:
548 id: Key_114
549 key_code: 114
550 key_sym: "r"
551 row: 3
552 col: 5.5
553 Key:
554 id: Key_116
555 key_code: 116
556 key_sym: "t"
557 row: 3
558 col: 6.5
559 Key:
560 id: Key_121
561 key_code: 121
562 key_sym: "y"
563 row: 3
564 col: 7.5
565 Key:
566 id: Key_117
567 key_code: 117
568 key_sym: "u"
569 row: 3
570 col: 8.5
571 Key:
572 id: Key_105
573 key_code: 105
574 key_sym: "i"
575 row: 3
576 col: 9.5
577 Key:
578 id: Key_111
579 key_code: 111
580 key_sym: "o"
581 row: 3
582 col: 10.5
583 Key:
584 id: Key_112
585 key_code: 112
586 key_sym: "p"
587 row: 3
588 col: 11.5
589 Key:
590 id: Key_94
591 key_code: 94
592 key_sym: "^"
593 row: 3
594 col: 12.5
595 Key:
596 id: Key_36
597 key_code: 36
598 key_sym: "$"
599 row: 3
600 col: 13.5
601 Key:
602 id: Key_13
603 key_code: 13
604 key_sym: "Enter"
605 row: 4
606 col: 14.8
607 key_width: 1.23
608 key_height: 2
609 Key:
610 id: Key_301
611 key_code: 301
612 key_sym: "CAPS"
613 row: 4
614 col: 1
615 key_width: 1.75
616 line_width: 1
617 enabled: False
618
619 Key:
620 id: Key_113
621 key_code: 113
622 key_sym: "q"
623 row: 4
624 col: 2.8
625 Key:
626 id: Key_115
627 key_code: 115
628 key_sym: "s"
629 row: 4
630 col: 3.8
631 Key:
632 id: Key_100
633 key_code: 100
634 key_sym: "d"
635 row: 4
636 col: 4.8
637 Key:
638 id: Key_102
639 key_code: 102
640 key_sym: "f"
641 row: 4
642 col: 5.8
643 Key:
644 id: Key_103
645 key_code: 103
646 key_sym: "g"
647 row: 4
648 col: 6.8
649 Key:
650 id: Key_104
651 key_code: 104
652 key_sym: "h"
653 row: 4
654 col: 7.8
655 Key:
656 id: Key_106
657 key_code: 106
658 key_sym: "j"
659 row: 4
660 col: 8.8
661 Key:
662 id: Key_107
663 key_code: 107
664 key_sym: "k"
665 row: 4
666 col: 9.8
667 Key:
668 id: Key_108
669 key_code: 108
670 key_sym: "l"
671 row: 4
672 col: 10.8
673 Key:
674 id: Key_109
675 key_code: 109
676 key_sym: "m"
677 row: 4
678 col: 11.8
679 Key:
680 id: Key_249
681 key_code: 249
682 key_sym: "รน"
683 row: 4
684 col: 12.8
685 Key:
686 id: Key_42
687 key_code: 42
688 key_sym: "*"
689 row: 4
690 col: 13.8
691 Key:
692 id: Key_304
693 key_code: 304
694 key_sym: "LShift"
695 row: 5
696 col: 1
697 key_width: 1.3
698 line_width: 1
699 enabled: False
700 Key:
701 id: Key_60
702 key_code: 60
703 key_sym: "<"
704 row: 5
705 col: 2.3
706 Key:
707 id: Key_119
708 key_code: 119
709 key_sym: "w"
710 row: 5
711 col: 3.3
712 Key:
713 id: Key_120
714 key_code: 120
715 key_sym: "x"
716 row: 5
717 col: 4.3
718 Key:
719 id: Key_99
720 key_code: 99
721 key_sym: "c"
722 row: 5
723 col: 5.3
724 Key:
725 id: Key_118
726 key_code: 118
727 key_sym: "v"
728 row: 5
729 col: 6.3
730 Key:
731 id: Key_98
732 key_code: 98
733 key_sym: "b"
734 row: 5
735 col: 7.3
736 Key:
737 id: Key_110
738 key_code: 110
739 key_sym: "n"
740 row: 5
741 col: 8.3
742 Key:
743 id: Key_44
744 key_code: 44
745 key_sym: ","
746 row: 5
747 col: 9.3
748 Key:
749 id: Key_59
750 key_code: 59
751 key_sym: ";"
752 row: 5
753 col: 10.3
754 Key:
755 id: Key_58
756 key_code: 58
757 key_sym: ":"
758 row: 5
759 col: 11.3
760 Key:
761 id: Key_33
762 key_code: 33
763 key_sym: "!"
764 row: 5
765 col: 12.3
766 Key:
767 id: Key_303
768 key_code: 303
769 key_sym: "RShift"
770 row: 5
771 col: 13.3
772 key_width: 2.7
773 line_width: 1
774 enabled: False
775 Key:
776 id: Key_306
777 key_code: 306
778 key_sym: "LCtrl"
779 row: 6
780 col: 1
781 key_width: 1.3
782 line_width: 1
783 enabled: False
784 Key:
785 id: Key_311
786 key_code: 311
787 key_sym: "LSuper"
788 row: 6
789 col: 3.3
790 line_width: 1
791 enabled: False
792 Key:
793 id: Key_308
794 key_code: 308
795 key_sym: "LAlt"
796 row: 6
797 col: 4.3
798 line_width: 1
799 enabled: False
800 Key:
801 id: Key_32
802 key_code: 32
803 key_sym: "Espace"
804 row: 6
805 col: 5.3
806 key_width: 5
807 Key:
808 id: Key_313
809 key_code: 313
810 key_sym: "AltGr"
811 row: 6
812 col: 10.3
813 line_width: 1
814 enabled: False
815 Key:
816 id: Key_314
817 key_code: 314
818 key_sym: "Compose"
819 row: 6
820 col: 11.3
821 line_width: 1
822 enabled: False
823 Key:
824 id: Key_305
825 key_code: 305
826 key_sym: "RCtrl"
827 row: 6
828 col: 12.3
829 key_width: 1.3
830 line_width: 1
831 enabled: False
832
833
834 Key:
835 id: Key_277
836 key_code: 277
837 key_sym: "ins"
838 row: 2
839 col: 1
840 pad_cols: True
841 Key:
842 id: Key_278
843 key_code: 278
844 key_sym: "home"
845 row: 2
846 col: 2
847 pad_cols: True
848 Key:
849 id: Key_280
850 key_code: 280
851 key_sym: "pg_u"
852 row: 2
853 col: 3
854 pad_cols: True
855 Key:
856 id: Key_127
857 key_code: 127
858 key_sym: "del"
859 row: 3
860 col: 1
861 pad_cols: True
862 Key:
863 id: Key_279
864 key_code: 279
865 key_sym: "end"
866 row: 3
867 col: 2
868 pad_cols: True
869 Key:
870 id: Key_281
871 key_code: 281
872 key_sym: "pg_d"
873 row: 3
874 col: 3
875 pad_cols: True
876 Key:
877 id: Key_273
878 key_code: 273
879 key_sym: "up"
880 row: 5
881 col: 2
882 pad_cols: True
883 Key:
884 id: Key_274
885 key_code: 274
886 key_sym: "down"
887 row: 6
888 col: 2
889 pad_cols: True
890 Key:
891 id: Key_276
892 key_code: 276
893 key_sym: "left"
894 row: 6
895 col: 1
896 pad_cols: True
897 Key:
898 id: Key_275
899 key_code: 275
900 key_sym: "right"
901 row: 6
902 col: 3
903 pad_cols: True