97 defaultPanel |
101 defaultPanel |
98 |top slv inset list view idx frame colSelected colUnselected| |
102 |top slv inset list view idx frame colSelected colUnselected| |
99 |
103 |
100 top := StandardSystemView new |
104 top := StandardSystemView new |
101 label:'UI-Selection Panel'; |
105 label:'UI-Selection Panel'; |
102 extent:480@280. |
106 extent:480@255. |
103 |
107 |
104 view := self origin:0.0 @ 0.0 corner:1.0 @ 1.0 in:top. |
108 view := self origin:0.0 @ 0.0 corner:1.0 @ 1.0 in:top. |
105 |
109 |
106 view labels:#( 'Button & Toggle' |
110 view labels:#( 'Button & Toggle' |
107 'Panel' |
111 'Panel' |
108 'Text' |
112 'Text' |
109 'View' |
113 'View' |
110 'Menu & Combo' |
114 'Menu & Combo' |
111 'Scroller' |
115 'Slider' |
112 ) |
116 ) |
113 selectors:#( #buttonToggleSpec |
117 selectors:#( #buttonToggleSpec |
114 #panelSpec |
118 #panelSpec |
115 #textSpec |
119 #textSpec |
116 #viewsSpec |
120 #viewsSpec |
117 #menuComboSpec |
121 #menuComboSpec |
118 #scrollerSpec |
122 #sliderSpec |
119 ) |
123 ) |
120 receiver:self. |
124 receiver:self. |
121 |
125 |
122 top open. |
126 top open. |
123 |
127 |
124 "Modified: 8.4.1997 / 01:13:53 / cg" |
|
125 ! ! |
128 ! ! |
126 |
129 |
127 !UISelectionPanel class methodsFor:'default specifications'! |
130 !UISelectionPanel class methodsFor:'interface specs'! |
128 |
131 |
129 buttonToggleSpec |
132 buttonToggleSpec |
130 "this window spec was automatically generated by the ST/X UIPainter" |
133 "this window spec was automatically generated by the ST/X UIPainter" |
131 |
134 |
132 "do not manually edit this - the painter/builder may not be able to |
135 "do not manually edit this - the painter/builder may not be able to |
312 #'window:' |
315 #'window:' |
313 #(#WindowSpec |
316 #(#WindowSpec |
314 #'name:' 'uIPainterView' |
317 #'name:' 'uIPainterView' |
315 #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) |
318 #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) |
316 #'label:' 'unnamed' |
319 #'label:' 'unnamed' |
317 #'bounds:' #(#Rectangle 0 0 450 100) |
320 #'bounds:' #(#Rectangle 0 0 456 137) |
318 ) |
321 ) |
319 #'component:' |
322 #'component:' |
320 #(#SpecCollection |
323 #(#SpecCollection |
321 #'collection:' |
324 #'collection:' |
322 #( |
325 #( |
323 #(#HorizontalPanelViewSpec |
326 #(#HorizontalPanelViewSpec |
324 #'name:' 'HorizontalPanelView' |
327 #'name:' 'HorizontalPanelView' |
325 #'layout:' #(#LayoutFrame 20 0 17 0 104 0 81 0) |
328 #'layout:' #(#LayoutFrame 9 0 16 0 93 0 101 0) |
326 #'component:' |
329 #'component:' |
327 #(#SpecCollection |
330 #(#SpecCollection |
328 #'collection:' |
331 #'collection:' |
329 #( |
332 #( |
330 #(#ActionButtonSpec |
333 #(#ActionButtonSpec |
331 #'name:' 'button1' |
334 #'name:' 'button1' |
332 #'label:' 'A' |
335 #'label:' 'A' |
333 #'translateLabel:' false |
336 #'translateLabel:' false |
334 #'tabable:' false |
337 #'tabable:' false |
335 #'isTriggerOnDown:' false |
338 #'isTriggerOnDown:' false |
336 #'extent:' #(#Point 34 23) |
339 #'extent:' #(#Point 22 23) |
337 #'canUIDrag:' false |
340 #'canUIDrag:' false |
338 ) |
341 ) |
339 #(#ActionButtonSpec |
342 #(#ActionButtonSpec |
340 #'name:' 'button8' |
343 #'name:' 'button8' |
341 #'label:' 'B' |
344 #'label:' 'B' |
342 #'translateLabel:' false |
345 #'translateLabel:' false |
343 #'tabable:' false |
346 #'tabable:' false |
344 #'isTriggerOnDown:' false |
347 #'isTriggerOnDown:' false |
345 #'extent:' #(#Point 32 41) |
348 #'extent:' #(#Point 22 23) |
|
349 #'canUIDrag:' false |
|
350 ) |
|
351 #(#ActionButtonSpec |
|
352 #'name:' 'button9' |
|
353 #'label:' 'C' |
|
354 #'translateLabel:' false |
|
355 #'tabable:' false |
|
356 #'isTriggerOnDown:' false |
|
357 #'extent:' #(#Point 22 23) |
346 #'canUIDrag:' false |
358 #'canUIDrag:' false |
347 ) |
359 ) |
348 ) |
360 ) |
349 ) |
361 ) |
350 #'level:' 0 |
362 #'level:' 0 |
379 ) |
391 ) |
380 ) |
392 ) |
381 ) |
393 ) |
382 #(#VerticalPanelViewSpec |
394 #(#VerticalPanelViewSpec |
383 #'name:' 'VerticalPanelView' |
395 #'name:' 'VerticalPanelView' |
384 #'layout:' #(#LayoutFrame 236 0 17 0 320 0 81 0) |
396 #'layout:' #(#LayoutFrame 99 0 16 0 180 0 101 0) |
385 #'component:' |
397 #'component:' |
386 #(#SpecCollection |
398 #(#SpecCollection |
387 #'collection:' |
399 #'collection:' |
388 #( |
400 #( |
389 #(#ActionButtonSpec |
401 #(#ActionButtonSpec |
390 #'name:' 'button4' |
402 #'name:' 'button4' |
391 #'label:' 'A' |
403 #'label:' 'A' |
392 #'translateLabel:' false |
404 #'translateLabel:' false |
393 #'tabable:' false |
405 #'tabable:' false |
394 #'isTriggerOnDown:' false |
406 #'isTriggerOnDown:' false |
395 #'extent:' #(#Point 19 18) |
407 #'extent:' #(#Point 22 23) |
396 #'canUIDrag:' false |
408 #'canUIDrag:' false |
397 ) |
409 ) |
398 #(#ActionButtonSpec |
410 #(#ActionButtonSpec |
399 #'name:' 'button5' |
411 #'name:' 'button5' |
400 #'label:' 'B' |
412 #'label:' 'B' |
401 #'translateLabel:' false |
413 #'translateLabel:' false |
402 #'tabable:' false |
414 #'tabable:' false |
403 #'isTriggerOnDown:' false |
415 #'isTriggerOnDown:' false |
404 #'extent:' #(#Point 63 30) |
416 #'extent:' #(#Point 22 23) |
|
417 #'canUIDrag:' false |
|
418 ) |
|
419 #(#ActionButtonSpec |
|
420 #'name:' 'button10' |
|
421 #'label:' 'C' |
|
422 #'translateLabel:' false |
|
423 #'tabable:' false |
|
424 #'isTriggerOnDown:' false |
|
425 #'extent:' #(#Point 22 23) |
405 #'canUIDrag:' false |
426 #'canUIDrag:' false |
406 ) |
427 ) |
407 ) |
428 ) |
408 ) |
429 ) |
409 #'level:' 0 |
430 #'level:' 0 |
436 #'canUIDrag:' false |
457 #'canUIDrag:' false |
437 ) |
458 ) |
438 ) |
459 ) |
439 ) |
460 ) |
440 ) |
461 ) |
|
462 #(#PanelViewSpec |
|
463 #'name:' 'PanelView' |
|
464 #'layout:' #(#LayoutFrame 186 0 17 0 247 0 102 0) |
|
465 #'component:' |
|
466 #(#SpecCollection |
|
467 #'collection:' |
|
468 #( |
|
469 #(#ActionButtonSpec |
|
470 #'name:' 'button11' |
|
471 #'label:' 'A' |
|
472 #'translateLabel:' false |
|
473 #'tabable:' false |
|
474 #'isTriggerOnDown:' false |
|
475 #'extent:' #(#Point 22 23) |
|
476 #'canUIDrag:' false |
|
477 ) |
|
478 #(#ActionButtonSpec |
|
479 #'name:' 'button12' |
|
480 #'label:' 'B' |
|
481 #'translateLabel:' false |
|
482 #'tabable:' false |
|
483 #'isTriggerOnDown:' false |
|
484 #'extent:' #(#Point 22 23) |
|
485 #'canUIDrag:' false |
|
486 ) |
|
487 #(#ActionButtonSpec |
|
488 #'name:' 'button13' |
|
489 #'label:' 'C' |
|
490 #'translateLabel:' false |
|
491 #'tabable:' false |
|
492 #'isTriggerOnDown:' false |
|
493 #'extent:' #(#Point 22 23) |
|
494 #'canUIDrag:' false |
|
495 ) |
|
496 #(#ActionButtonSpec |
|
497 #'name:' 'button14' |
|
498 #'label:' 'D' |
|
499 #'translateLabel:' false |
|
500 #'tabable:' false |
|
501 #'isTriggerOnDown:' false |
|
502 #'extent:' #(#Point 22 23) |
|
503 #'canUIDrag:' false |
|
504 ) |
|
505 #(#ActionButtonSpec |
|
506 #'name:' 'button15' |
|
507 #'label:' 'E' |
|
508 #'translateLabel:' false |
|
509 #'tabable:' false |
|
510 #'isTriggerOnDown:' false |
|
511 #'extent:' #(#Point 22 23) |
|
512 #'canUIDrag:' false |
|
513 ) |
|
514 ) |
|
515 ) |
|
516 #'level:' 0 |
|
517 #'horizontalLayout:' #fitSpace |
|
518 #'verticalLayout:' #fitSpace |
|
519 #'horizontalSpace:' 3 |
|
520 #'verticalSpace:' 3 |
|
521 ) |
441 ) |
522 ) |
442 ) |
523 ) |
443 ) |
524 ) |
444 ! |
525 ! |
445 |
526 |
446 scrollerSpec |
527 sliderSpec |
447 "this window spec was automatically generated by the ST/X UIPainter" |
528 "this window spec was automatically generated by the ST/X UIPainter" |
448 |
529 |
449 "do not manually edit this - the painter/builder may not be able to |
530 "do not manually edit this - the painter/builder may not be able to |
450 handle the specification if its corrupted." |
531 handle the specification if its corrupted." |
451 |
532 |
452 " |
533 " |
453 UIPainter new openOnClass:UISelectionPanel andSelector:#scrollerSpec |
534 UIPainter new openOnClass:UISelectionPanel andSelector:#sliderSpec |
454 UISelectionPanel new openInterface:#scrollerSpec |
535 UISelectionPanel new openInterface:#sliderSpec |
455 " |
536 " |
456 |
537 |
457 <resource: #canvas> |
538 <resource: #canvas> |
458 |
539 |
459 ^ |
540 ^ |
468 ) |
549 ) |
469 #'component:' |
550 #'component:' |
470 #(#SpecCollection |
551 #(#SpecCollection |
471 #'collection:' |
552 #'collection:' |
472 #( |
553 #( |
473 #(#ArbitraryComponentSpec |
|
474 #'name:' 'HorizontalMiniScroller' |
|
475 #'layout:' #(#LayoutFrame 4 0 10 0 105 0 16 0) |
|
476 #'component:' '' |
|
477 #'tabable:' false |
|
478 #'hasHorizontalScrollBar:' false |
|
479 #'hasVerticalScrollBar:' false |
|
480 #'hasBorder:' false |
|
481 ) |
|
482 #(#ArbitraryComponentSpec |
|
483 #'name:' 'HorizontalScrollBar' |
|
484 #'layout:' #(#LayoutFrame 4 0 23 0 105 0 42 0) |
|
485 #'component:' '' |
|
486 #'tabable:' false |
|
487 #'hasHorizontalScrollBar:' false |
|
488 #'hasVerticalScrollBar:' false |
|
489 #'hasBorder:' false |
|
490 ) |
|
491 #(#ArbitraryComponentSpec |
|
492 #'name:' 'HorizontalScroller' |
|
493 #'layout:' #(#LayoutFrame 4 0 49 0 105 0 66 0) |
|
494 #'component:' '' |
|
495 #'tabable:' false |
|
496 #'hasHorizontalScrollBar:' false |
|
497 #'hasVerticalScrollBar:' false |
|
498 #'hasBorder:' false |
|
499 ) |
|
500 #(#ArbitraryComponentSpec |
|
501 #'name:' 'HorizontalSlider' |
|
502 #'layout:' #(#LayoutFrame 4 0 73 0 105 0 90 0) |
|
503 #'tabable:' false |
|
504 #'hasHorizontalScrollBar:' false |
|
505 #'hasVerticalScrollBar:' false |
|
506 #'hasBorder:' false |
|
507 ) |
|
508 #(#ArbitraryComponentSpec |
|
509 #'name:' 'MiniScroller' |
|
510 #'layout:' #(#LayoutFrame 137 0 11 0 143 0 90 0) |
|
511 #'component:' '' |
|
512 #'tabable:' false |
|
513 #'hasHorizontalScrollBar:' false |
|
514 #'hasVerticalScrollBar:' false |
|
515 #'hasBorder:' false |
|
516 ) |
|
517 #(#ArbitraryComponentSpec |
|
518 #'name:' 'ScrollBar' |
|
519 #'layout:' #(#LayoutFrame 153 0 11 0 172 0 90 0) |
|
520 #'component:' '' |
|
521 #'tabable:' false |
|
522 #'hasHorizontalScrollBar:' false |
|
523 #'hasVerticalScrollBar:' false |
|
524 #'hasBorder:' false |
|
525 ) |
|
526 #(#ScrollerSpec |
|
527 #'name:' 'Scroller' |
|
528 #'layout:' #(#LayoutFrame 182 0 11 0 212 0 90 0) |
|
529 ) |
|
530 #(#SliderSpec |
554 #(#SliderSpec |
531 #'name:' 'Slider' |
555 #'name:' 'Vertical Slider' |
532 #'layout:' #(#LayoutFrame 222 0 11 0 252 0 90 0) |
556 #'layout:' #(#LayoutFrame 17 0 9 0 35 0 97 0) |
533 ) |
557 #'orientation:' #vertical |
534 #(#ArbitraryComponentSpec |
558 ) |
535 #'name:' 'ThumbWheel' |
559 #(#ThumbWheelSpec |
536 #'layout:' #(#LayoutFrame 270 0 11 0 285 0 90 0) |
560 #'name:' 'Vertical ThumbWheel' |
537 #'component:' '' |
561 #'layout:' #(#LayoutFrame 45 0 9 0 60 0 97 0) |
538 #'tabable:' false |
562 #'orientation:' #vertical |
539 #'hasHorizontalScrollBar:' false |
563 #'start:' 0 |
540 #'hasVerticalScrollBar:' false |
564 #'stop:' 360 |
541 #'hasBorder:' false |
565 ) |
|
566 #(#ThumbWheelSpec |
|
567 #'name:' 'Horizontal ThumbWheel' |
|
568 #'layout:' #(#LayoutFrame 99 0 9 0 188 0 24 0) |
|
569 #'orientation:' #horizontal |
|
570 #'start:' 0 |
|
571 #'stop:' 360 |
|
572 ) |
|
573 #(#SliderSpec |
|
574 #'name:' 'Horizontal Slider' |
|
575 #'layout:' #(#LayoutFrame 99 0 36 0 188 0 54 0) |
|
576 #'orientation:' #horizontal |
|
577 #'start:' 0 |
|
578 #'stop:' 100 |
542 ) |
579 ) |
543 ) |
580 ) |
544 ) |
581 ) |
545 ) |
582 ) |
546 ! |
583 ! |
580 #'acceptOnReturn:' true |
617 #'acceptOnReturn:' true |
581 #'acceptOnTab:' true |
618 #'acceptOnTab:' true |
582 #'acceptOnLostFocus:' true |
619 #'acceptOnLostFocus:' true |
583 #'hasBorder:' false |
620 #'hasBorder:' false |
584 ) |
621 ) |
|
622 |
|
623 |
|
624 |
|
625 |
|
626 |
|
627 |
|
628 |
|
629 |
|
630 |
|
631 |
585 #(#LabelSpec |
632 #(#LabelSpec |
586 #'name:' 'Text Label' |
633 #'name:' 'Text Label' |
587 #'layout:' #(#LayoutFrame 13 0 41 0 117 0 57 0) |
634 #'layout:' #(#LayoutFrame 13 0 41 0 117 0 57 0) |
588 #'label:' 'Text Label' |
635 #'label:' 'Text Label' |
589 #'initiallyInvisible:' false |
636 #'initiallyInvisible:' false |
666 #'window:' |
711 #'window:' |
667 #(#WindowSpec |
712 #(#WindowSpec |
668 #'name:' 'uIPainterView' |
713 #'name:' 'uIPainterView' |
669 #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) |
714 #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) |
670 #'label:' 'unnamed' |
715 #'label:' 'unnamed' |
671 #'bounds:' #(#Rectangle 0 0 450 100) |
716 #'bounds:' #(#Rectangle 0 0 457 177) |
672 ) |
717 ) |
673 #'component:' |
718 #'component:' |
674 #(#SpecCollection |
719 #(#SpecCollection |
675 #'collection:' |
720 #'collection:' |
676 #( |
721 #( |
677 #(#FramedBoxSpec |
722 #(#FramedBoxSpec |
678 #'name:' 'FramedBox' |
723 #'name:' 'FramedBox' |
679 #'layout:' #(#LayoutFrame 4 0 11 0 109 0 81 0) |
724 #'layout:' #(#LayoutFrame 4 0 11 0 109 0 66 0) |
680 #'label:' 'Frame' |
725 #'label:' 'FramedBox' |
681 #'labelPosition:' #topCenter |
726 #'labelPosition:' #topCenter |
682 #'showFrame:' true |
727 #'showFrame:' true |
683 ) |
728 ) |
684 #(#ViewSpec |
729 #(#ViewSpec |
685 #'name:' 'View' |
730 #'name:' 'View' |
686 #'layout:' #(#LayoutFrame 118 0 11 0 223 0 81 0) |
731 #'layout:' #(#LayoutFrame 118 0 11 0 223 0 66 0) |
687 #'component:' |
732 #'component:' |
688 #(#SpecCollection |
733 #(#SpecCollection |
689 #'collection:' |
734 #'collection:' |
690 #( |
735 #( |
691 #(#LabelSpec |
736 #(#LabelSpec |
702 ) |
747 ) |
703 ) |
748 ) |
704 ) |
749 ) |
705 #(#SubCanvasSpec |
750 #(#SubCanvasSpec |
706 #'name:' 'SubCanvas' |
751 #'name:' 'SubCanvas' |
707 #'layout:' #(#LayoutFrame 232 0 11 0 337 0 81 0) |
752 #'layout:' #(#LayoutFrame 118 0 78 0 223 0 133 0) |
708 ) |
753 ) |
709 #(#LabelSpec |
754 #(#LabelSpec |
710 #'name:' 'label2' |
755 #'name:' 'label2' |
711 #'layout:' #(#Point 246 20) |
756 #'layout:' #(#Point 120 78) |
712 #'label:' 'SubCanvas' |
757 #'label:' 'SubCanvas' |
713 #'initiallyInvisible:' false |
758 #'initiallyInvisible:' false |
714 #'translateLabel:' false |
759 #'translateLabel:' false |
715 #'level:' 0 |
760 #'level:' 0 |
716 #'adjust:' #center |
761 #'adjust:' #center |
717 #'hasCharacterOrientedLabel:' true |
762 #'hasCharacterOrientedLabel:' true |
718 #'canUIDrag:' false |
763 #'canUIDrag:' false |
719 ) |
764 ) |
720 #(#DividerSpec |
765 #(#DividerSpec |
721 #'name:' 'Horizontal Seperator' |
766 #'name:' 'Horizontal Seperator' |
722 #'layout:' #(#LayoutFrame 373 0 11 0 437 0 28 0) |
767 #'layout:' #(#LayoutFrame 276 0 11 0 340 0 28 0) |
723 #'orientation:' #horizontal |
768 #'orientation:' #horizontal |
724 ) |
769 ) |
725 #(#DividerSpec |
770 #(#DividerSpec |
726 #'name:' 'Vertical Seperator' |
771 #'name:' 'Vertical Seperator' |
727 #'layout:' #(#LayoutFrame 345 0 11 0 364 0 81 0) |
772 #'layout:' #(#LayoutFrame 251 0 11 0 270 0 66 0) |
728 #'orientation:' #vertical |
773 #'orientation:' #vertical |
|
774 ) |
|
775 #(#TabViewSpec |
|
776 #'name:' 'TabView' |
|
777 #'layout:' #(#LayoutFrame 4 0 78 0 109 0 133 0) |
|
778 #'tabWidget:' #Folder |
|
779 ) |
|
780 #(#LabelSpec |
|
781 #'name:' 'label3' |
|
782 #'layout:' #(#Point 7 78) |
|
783 #'label:' 'TabView' |
|
784 #'initiallyInvisible:' false |
|
785 #'translateLabel:' false |
|
786 #'level:' 0 |
|
787 #'adjust:' #center |
|
788 #'hasCharacterOrientedLabel:' true |
|
789 #'canUIDrag:' false |
729 ) |
790 ) |
730 ) |
791 ) |
731 ) |
792 ) |
732 ) |
793 ) |
733 |
|
734 "Modified: 8.4.1997 / 01:15:10 / cg" |
|
735 ! ! |
794 ! ! |
736 |
795 |
737 !UISelectionPanel methodsFor:'accessing'! |
796 !UISelectionPanel methodsFor:'accessing'! |
738 |
797 |
739 labels:labels selectors:selectors receiver:receiver |
798 labels:labels selectors:selectors receiver:receiver |
835 buttonMotion:state x:x y:y |
893 buttonMotion:state x:x y:y |
836 "start a drag on selection |
894 "start a drag on selection |
837 " |
895 " |
838 |obj sensor| |
896 |obj sensor| |
839 |
897 |
840 selection notNil ifTrue:[ |
898 (state ~~ 0 and:[selection notNil]) ifTrue:[ |
841 sensor := self sensor. |
899 sensor := self sensor. |
842 sensor anyButtonPressed ifTrue:[ |
900 sensor anyButtonPressed ifTrue:[ |
843 (lastClickPoint dist:(x@y)) > 10.0 ifTrue:[ |
901 (lastClickPoint dist:(x@y)) > 10.0 ifTrue:[ |
844 self startDrag |
902 self startDrag |
845 ] |
903 ] |
896 inputView enableButtonEvents. |
954 inputView enableButtonEvents. |
897 inputView enableButtonMotionEvents. |
955 inputView enableButtonMotionEvents. |
898 inputView enableMotionEvents. |
956 inputView enableMotionEvents. |
899 inputView delegate:(KeyboardForwarder from:inputView toView:tabView). |
957 inputView delegate:(KeyboardForwarder from:inputView toView:tabView). |
900 |
958 |
|
959 |
901 tabView tabWidget:#Window. |
960 tabView tabWidget:#Window. |
|
961 tabView useIndex:true. |
902 |
962 |
903 tabView styleAt:#expandSelection put:6@2. |
963 tabView styleAt:#expandSelection put:6@2. |
904 tabView styleAt:#labelBottomInset put:4. |
964 tabView styleAt:#labelBottomInset put:4. |
905 tabView styleAt:#lableTopInset put:0. |
965 tabView styleAt:#lableTopInset put:0. |
906 tabView font:(Label defaultFont). |
966 tabView font:(Label defaultFont). |
908 self delegate:(KeyboardForwarder from:self toView:tabView). |
968 self delegate:(KeyboardForwarder from:self toView:tabView). |
909 |
969 |
910 window viewBackground:(tabView styleAt:#selectedColor). |
970 window viewBackground:(tabView styleAt:#selectedColor). |
911 labelView backgroundColor:(tabView styleAt:#unselectedColor). |
971 labelView backgroundColor:(tabView styleAt:#unselectedColor). |
912 |
972 |
913 "Modified: 8.4.1997 / 01:13:15 / cg" |
|
914 ! ! |
973 ! ! |
915 |
974 |
916 !UISelectionPanel methodsFor:'searching'! |
975 !UISelectionPanel methodsFor:'searching'! |
917 |
976 |
918 buildSpecFrom:aSpec |
977 buildSpecFrom:aSpec |