Changeset 14 for trunk/Cocoa/F-Script Anywhere/Source
- Timestamp:
- 10/20/02 04:41:17 (22 years ago)
- Location:
- trunk/Cocoa/F-Script Anywhere/Source
- Files:
-
- 1 added
- 1 deleted
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Cocoa/F-Script Anywhere/Source/English.lproj/FSAViewAssociationPanel.nib/classes.nib
r7 r14 2 2 IBClasses = ( 3 3 { 4 ACTIONS = {captureView = id; defineVariable = id; }; 4 ACTIONS = { 5 captureView = id; 6 defineVariable = id; 7 update = id; 8 viewInObjectBrowser = id; 9 }; 5 10 CLASS = FSAViewAssociationController; 6 11 LANGUAGE = ObjC; 7 12 OUTLETS = { 8 13 associateButton = NSButton; 14 browseButton = NSButton; 9 15 captureButton = NSButton; 10 16 descriptionField = NSTextField; -
trunk/Cocoa/F-Script Anywhere/Source/F-Script Anywhere.pbproj/nicholas.pbxuser
r7 r14 14 14 activeTarget = 29B97326FDCFA39411CA2CEA; 15 15 addToTargets = ( 16 103DFC1B016C16650C000109,17 16 ); 18 17 breakpoints = ( … … 24 23 ); 25 24 perUserDictionary = { 26 PBXPerProjectTemplateStateSaveDate = 48 582334;25 PBXPerProjectTemplateStateSaveDate = 48675460; 27 26 "PBXTemplateGeometry-F5CA7EC8015C06940DCA290F" = { 28 27 ContentSize = "{705, 569}"; … … 166 165 Template = F5CA7EC8015C06940DCA290F; 167 166 ToolbarVisible = YES; 168 WindowLocation = "{ 11, 351}";167 WindowLocation = "{388, 507}"; 169 168 }; 170 169 "PBXTemplateGeometry-F5CA7ECB015C094F0DCA290F" = { … … 354 353 Split0 = { 355 354 Split0 = { 356 NavContent0 = {357 bookmark = F59E8BD002E5504501AEEDB1;358 history = (359 F5FF50C302E5477101AEEDB1,360 F59E8BCB02E5504501AEEDB1,361 F59E8BCC02E5504501AEEDB1,362 F59E8BCD02E5504501AEEDB1,363 );364 prevStack = (365 F5FF50C502E5477101AEEDB1,366 F59E8BCE02E5504501AEEDB1,367 F59E8BCF02E5504501AEEDB1,368 );369 };370 355 NavCount = 1; 371 356 NavGeometry0 = { 372 Frame = "{{0, 0}, { 656, 537}}";357 Frame = "{{0, 0}, {594, 150}}"; 373 358 NavBarVisible = YES; 374 359 }; … … 444 429 Split0 = { 445 430 Split0 = { 431 NavContent0 = { 432 bookmark = F53CD13702E6A45601AEEDB1; 433 history = ( 434 F50BD5BE02E6897C01AEEDB1, 435 ); 436 }; 446 437 NavCount = 1; 447 438 NavGeometry0 = { 448 Frame = "{{0, 0}, { 594, 150}}";439 Frame = "{{0, 0}, {668, 621}}"; 449 440 NavBarVisible = YES; 450 441 }; … … 625 616 }, 626 617 { 627 ContentSize = "{ 656, 537}";618 ContentSize = "{594, 303}"; 628 619 LeftSlideOut = { 629 620 Collapsed = NO; 630 Frame = "{{0, 0}, {656, 537}}"; 621 Frame = "{{0, 23}, {594, 280}}"; 622 Split0 = { 623 ActiveTab = 1; 624 Collapsed = YES; 625 Frame = "{{0, 0}, {594, 280}}"; 626 Split0 = { 627 Frame = "{{1e+06, 1e+06}, {594, 0}}"; 628 }; 629 SplitCount = 1; 630 Tab0 = { 631 Debugger = { 632 Collapsed = NO; 633 Frame = "{{0, 0}, {804, 321}}"; 634 Split0 = { 635 Frame = "{{0, 24}, {804, 297}}"; 636 Split0 = { 637 Frame = "{{0, 0}, {394, 297}}"; 638 }; 639 Split1 = { 640 DebugVariablesTableConfiguration = ( 641 Name, 642 102.803, 643 Value, 644 125.074, 645 Summary, 646 147.123, 647 ); 648 Frame = "{{403, 0}, {401, 297}}"; 649 }; 650 SplitCount = 2; 651 }; 652 SplitCount = 1; 653 Tab0 = { 654 Frame = "{{0, 0}, {100, 50}}"; 655 }; 656 Tab1 = { 657 Frame = "{{0, 0}, {100, 50}}"; 658 }; 659 TabCount = 2; 660 TabsVisible = YES; 661 }; 662 Frame = "{{0, 0}, {804, 321}}"; 663 LauncherConfigVersion = 7; 664 }; 665 Tab1 = { 666 Frame = "{{0, 0}, {594, 274}}"; 667 LauncherConfigVersion = 3; 668 Runner = { 669 Frame = "{{0, 0}, {594, 274}}"; 670 }; 671 }; 672 Tab2 = { 673 BuildMessageFrame = "{{0, 0}, {806, 237}}"; 674 BuildTranscriptFrame = "{{0, 246}, {806, 3}}"; 675 Frame = "{{0, 0}, {804, 247}}"; 676 }; 677 Tab3 = { 678 Frame = "{{0, 0}, {612, 295}}"; 679 }; 680 TabCount = 4; 681 TabsVisible = NO; 682 }; 683 SplitCount = 1; 684 Tab0 = { 685 Frame = "{{0, 0}, {300, 533}}"; 686 GroupTreeTableConfiguration = ( 687 TargetStatusColumn, 688 18, 689 MainColumn, 690 267, 691 ); 692 }; 693 Tab1 = { 694 ClassesFrame = "{{0, 0}, {280, 398}}"; 695 ClassesTreeTableConfiguration = ( 696 PBXBookColumnIdentifier, 697 20, 698 PBXClassColumnIdentifier, 699 237, 700 ); 701 Frame = "{{0, 0}, {278, 659}}"; 702 MembersFrame = "{{0, 407}, {280, 252}}"; 703 MembersTreeTableConfiguration = ( 704 PBXBookColumnIdentifier, 705 20, 706 PBXMethodColumnIdentifier, 707 236, 708 ); 709 }; 710 Tab2 = { 711 Frame = "{{0, 0}, {200, 100}}"; 712 }; 713 Tab3 = { 714 Frame = "{{0, 0}, {200, 386}}"; 715 Split0 = { 716 Frame = "{{0, 0}, {200, 186}}"; 717 TargetTreeTableConfiguration = ( 718 ActiveTarget, 719 16, 720 TargetName, 721 168, 722 ); 723 }; 724 Split1 = { 725 BuildStyleTreeTableConfiguration = ( 726 IsActive, 727 16, 728 Name, 729 169, 730 ); 731 Frame = "{{0, 195}, {200, 191}}"; 732 }; 733 SplitCount = 2; 734 }; 735 Tab4 = { 736 ExecutableTreeTableConfiguration = ( 737 ActiveExecutable, 738 16, 739 ExecutableName, 740 217, 741 ); 742 Frame = "{{0, 0}, {250, 386}}"; 743 }; 744 Tab5 = { 745 BreakpointsTreeTableConfiguration = ( 746 breakpointColumn, 747 197, 748 enabledColumn, 749 31, 750 ); 751 Frame = "{{0, 0}, {250, 100}}"; 752 }; 753 TabCount = 6; 754 TabsVisible = NO; 755 }; 756 StatusViewVisible = YES; 757 Template = F5534CB2020F3F8A0DCA290F; 758 ToolbarVisible = YES; 759 WindowLocation = "{397, 507}"; 760 }, 761 { 762 ContentSize = "{618, 257}"; 763 LeftSlideOut = { 764 Collapsed = NO; 765 Frame = "{{0, 23}, {618, 234}}"; 766 Split0 = { 767 ActiveTab = 2; 768 Collapsed = YES; 769 Frame = "{{0, 0}, {618, 234}}"; 770 Split0 = { 771 Frame = "{{1e+06, 1e+06}, {618, 0}}"; 772 }; 773 SplitCount = 1; 774 Tab0 = { 775 Debugger = { 776 Collapsed = NO; 777 Frame = "{{0, 0}, {952, 321}}"; 778 Split0 = { 779 Frame = "{{0, 24}, {952, 297}}"; 780 Split0 = { 781 Frame = "{{0, 0}, {468, 297}}"; 782 }; 783 Split1 = { 784 DebugVariablesTableConfiguration = ( 785 Name, 786 126.803, 787 Value, 788 150.074, 789 Summary, 790 172.123, 791 ); 792 Frame = "{{477, 0}, {475, 297}}"; 793 }; 794 SplitCount = 2; 795 }; 796 SplitCount = 1; 797 Tab0 = { 798 Frame = "{{0, 0}, {100, 50}}"; 799 }; 800 Tab1 = { 801 Frame = "{{0, 0}, {100, 50}}"; 802 }; 803 TabCount = 2; 804 TabsVisible = YES; 805 }; 806 Frame = "{{0, 0}, {952, 321}}"; 807 LauncherConfigVersion = 7; 808 }; 809 Tab1 = { 810 Frame = "{{0, 0}, {781, 452}}"; 811 LauncherConfigVersion = 3; 812 Runner = { 813 Frame = "{{0, 0}, {781, 452}}"; 814 }; 815 }; 816 Tab2 = { 817 BuildMessageFrame = "{{0, 0}, {620, 123}}"; 818 BuildTranscriptFrame = "{{0, 132}, {620, 98}}"; 819 Frame = "{{0, 0}, {618, 228}}"; 820 }; 821 Tab3 = { 822 Frame = "{{0, 0}, {612, 295}}"; 823 }; 824 TabCount = 4; 825 TabsVisible = NO; 826 }; 827 SplitCount = 1; 828 Tab0 = { 829 Frame = "{{0, 0}, {300, 533}}"; 830 GroupTreeTableConfiguration = ( 831 TargetStatusColumn, 832 18, 833 MainColumn, 834 267, 835 ); 836 }; 837 Tab1 = { 838 ClassesFrame = "{{0, 0}, {280, 398}}"; 839 ClassesTreeTableConfiguration = ( 840 PBXBookColumnIdentifier, 841 20, 842 PBXClassColumnIdentifier, 843 237, 844 ); 845 Frame = "{{0, 0}, {278, 659}}"; 846 MembersFrame = "{{0, 407}, {280, 252}}"; 847 MembersTreeTableConfiguration = ( 848 PBXBookColumnIdentifier, 849 20, 850 PBXMethodColumnIdentifier, 851 236, 852 ); 853 }; 854 Tab2 = { 855 Frame = "{{0, 0}, {200, 100}}"; 856 }; 857 Tab3 = { 858 Frame = "{{0, 0}, {200, 100}}"; 859 Split0 = { 860 Frame = "{{0, 0}, {200, 45}}"; 861 TargetTreeTableConfiguration = ( 862 ActiveTarget, 863 16, 864 TargetName, 865 168, 866 ); 867 }; 868 Split1 = { 869 BuildStyleTreeTableConfiguration = ( 870 IsActive, 871 16, 872 Name, 873 169, 874 ); 875 Frame = "{{0, 54}, {200, 46}}"; 876 }; 877 SplitCount = 2; 878 }; 879 Tab4 = { 880 ExecutableTreeTableConfiguration = ( 881 ActiveExecutable, 882 16, 883 ExecutableName, 884 217, 885 ); 886 Frame = "{{0, 0}, {250, 100}}"; 887 }; 888 Tab5 = { 889 BreakpointsTreeTableConfiguration = ( 890 breakpointColumn, 891 197, 892 enabledColumn, 893 31, 894 ); 895 Frame = "{{0, 0}, {250, 100}}"; 896 }; 897 TabCount = 6; 898 TabsVisible = NO; 899 }; 900 StatusViewVisible = YES; 901 Template = F5314676015831810DCA290F; 902 ToolbarVisible = YES; 903 WindowLocation = "{453, 592}"; 904 }, 905 { 906 ContentSize = "{668, 621}"; 907 LeftSlideOut = { 908 Collapsed = NO; 909 Frame = "{{0, 0}, {668, 621}}"; 631 910 Split0 = { 632 911 Collapsed = NO; 633 Frame = "{{0, 0}, {6 56, 537}}";912 Frame = "{{0, 0}, {668, 621}}"; 634 913 Split0 = { 635 Frame = "{{0, 0}, {6 56, 537}}";914 Frame = "{{0, 0}, {668, 621}}"; 636 915 }; 637 916 SplitCount = 1; … … 763 1042 }; 764 1043 StatusViewVisible = NO; 765 Template = F5CA7EC A015C09360DCA290F;1044 Template = F5CA7ECB015C094F0DCA290F; 766 1045 ToolbarVisible = NO; 767 WindowLocation = "{223, 148}"; 768 }, 769 { 770 ContentSize = "{618, 257}"; 771 LeftSlideOut = { 772 Collapsed = NO; 773 Frame = "{{0, 23}, {618, 234}}"; 774 Split0 = { 775 ActiveTab = 2; 776 Collapsed = YES; 777 Frame = "{{0, 0}, {618, 234}}"; 778 Split0 = { 779 Frame = "{{1e+06, 1e+06}, {618, 0}}"; 780 }; 781 SplitCount = 1; 782 Tab0 = { 783 Debugger = { 784 Collapsed = NO; 785 Frame = "{{0, 0}, {952, 321}}"; 786 Split0 = { 787 Frame = "{{0, 24}, {952, 297}}"; 788 Split0 = { 789 Frame = "{{0, 0}, {468, 297}}"; 790 }; 791 Split1 = { 792 DebugVariablesTableConfiguration = ( 793 Name, 794 126.803, 795 Value, 796 150.074, 797 Summary, 798 172.123, 799 ); 800 Frame = "{{477, 0}, {475, 297}}"; 801 }; 802 SplitCount = 2; 803 }; 804 SplitCount = 1; 805 Tab0 = { 806 Frame = "{{0, 0}, {100, 50}}"; 807 }; 808 Tab1 = { 809 Frame = "{{0, 0}, {100, 50}}"; 810 }; 811 TabCount = 2; 812 TabsVisible = YES; 813 }; 814 Frame = "{{0, 0}, {952, 321}}"; 815 LauncherConfigVersion = 7; 816 }; 817 Tab1 = { 818 Frame = "{{0, 0}, {781, 452}}"; 819 LauncherConfigVersion = 3; 820 Runner = { 821 Frame = "{{0, 0}, {781, 452}}"; 822 }; 823 }; 824 Tab2 = { 825 BuildMessageFrame = "{{0, 0}, {620, 123}}"; 826 BuildTranscriptFrame = "{{0, 132}, {620, 98}}"; 827 Frame = "{{0, 0}, {618, 228}}"; 828 }; 829 Tab3 = { 830 Frame = "{{0, 0}, {612, 295}}"; 831 }; 832 TabCount = 4; 833 TabsVisible = NO; 834 }; 835 SplitCount = 1; 836 Tab0 = { 837 Frame = "{{0, 0}, {300, 533}}"; 838 GroupTreeTableConfiguration = ( 839 TargetStatusColumn, 840 18, 841 MainColumn, 842 267, 843 ); 844 }; 845 Tab1 = { 846 ClassesFrame = "{{0, 0}, {280, 398}}"; 847 ClassesTreeTableConfiguration = ( 848 PBXBookColumnIdentifier, 849 20, 850 PBXClassColumnIdentifier, 851 237, 852 ); 853 Frame = "{{0, 0}, {278, 659}}"; 854 MembersFrame = "{{0, 407}, {280, 252}}"; 855 MembersTreeTableConfiguration = ( 856 PBXBookColumnIdentifier, 857 20, 858 PBXMethodColumnIdentifier, 859 236, 860 ); 861 }; 862 Tab2 = { 863 Frame = "{{0, 0}, {200, 100}}"; 864 }; 865 Tab3 = { 866 Frame = "{{0, 0}, {200, 100}}"; 867 Split0 = { 868 Frame = "{{0, 0}, {200, 45}}"; 869 TargetTreeTableConfiguration = ( 870 ActiveTarget, 871 16, 872 TargetName, 873 168, 874 ); 875 }; 876 Split1 = { 877 BuildStyleTreeTableConfiguration = ( 878 IsActive, 879 16, 880 Name, 881 169, 882 ); 883 Frame = "{{0, 54}, {200, 46}}"; 884 }; 885 SplitCount = 2; 886 }; 887 Tab4 = { 888 ExecutableTreeTableConfiguration = ( 889 ActiveExecutable, 890 16, 891 ExecutableName, 892 217, 893 ); 894 Frame = "{{0, 0}, {250, 100}}"; 895 }; 896 Tab5 = { 897 BreakpointsTreeTableConfiguration = ( 898 breakpointColumn, 899 197, 900 enabledColumn, 901 31, 902 ); 903 Frame = "{{0, 0}, {250, 100}}"; 904 }; 905 TabCount = 6; 906 TabsVisible = NO; 907 }; 908 StatusViewVisible = YES; 909 Template = F5314676015831810DCA290F; 910 ToolbarVisible = YES; 911 WindowLocation = "{365, 285}"; 912 }, 913 { 914 ContentSize = "{594, 303}"; 915 LeftSlideOut = { 916 Collapsed = NO; 917 Frame = "{{0, 23}, {594, 280}}"; 918 Split0 = { 919 ActiveTab = 1; 920 Collapsed = YES; 921 Frame = "{{0, 0}, {594, 280}}"; 922 Split0 = { 923 Frame = "{{1e+06, 1e+06}, {594, 0}}"; 924 }; 925 SplitCount = 1; 926 Tab0 = { 927 Debugger = { 928 Collapsed = NO; 929 Frame = "{{0, 0}, {804, 321}}"; 930 Split0 = { 931 Frame = "{{0, 24}, {804, 297}}"; 932 Split0 = { 933 Frame = "{{0, 0}, {394, 297}}"; 934 }; 935 Split1 = { 936 DebugVariablesTableConfiguration = ( 937 Name, 938 102.803, 939 Value, 940 125.074, 941 Summary, 942 147.123, 943 ); 944 Frame = "{{403, 0}, {401, 297}}"; 945 }; 946 SplitCount = 2; 947 }; 948 SplitCount = 1; 949 Tab0 = { 950 Frame = "{{0, 0}, {100, 50}}"; 951 }; 952 Tab1 = { 953 Frame = "{{0, 0}, {100, 50}}"; 954 }; 955 TabCount = 2; 956 TabsVisible = YES; 957 }; 958 Frame = "{{0, 0}, {804, 321}}"; 959 LauncherConfigVersion = 7; 960 }; 961 Tab1 = { 962 Frame = "{{0, 0}, {594, 274}}"; 963 LauncherConfigVersion = 3; 964 Runner = { 965 Frame = "{{0, 0}, {594, 274}}"; 966 }; 967 }; 968 Tab2 = { 969 BuildMessageFrame = "{{0, 0}, {806, 237}}"; 970 BuildTranscriptFrame = "{{0, 246}, {806, 3}}"; 971 Frame = "{{0, 0}, {804, 247}}"; 972 }; 973 Tab3 = { 974 Frame = "{{0, 0}, {612, 295}}"; 975 }; 976 TabCount = 4; 977 TabsVisible = NO; 978 }; 979 SplitCount = 1; 980 Tab0 = { 981 Frame = "{{0, 0}, {300, 533}}"; 982 GroupTreeTableConfiguration = ( 983 TargetStatusColumn, 984 18, 985 MainColumn, 986 267, 987 ); 988 }; 989 Tab1 = { 990 ClassesFrame = "{{0, 0}, {280, 398}}"; 991 ClassesTreeTableConfiguration = ( 992 PBXBookColumnIdentifier, 993 20, 994 PBXClassColumnIdentifier, 995 237, 996 ); 997 Frame = "{{0, 0}, {278, 659}}"; 998 MembersFrame = "{{0, 407}, {280, 252}}"; 999 MembersTreeTableConfiguration = ( 1000 PBXBookColumnIdentifier, 1001 20, 1002 PBXMethodColumnIdentifier, 1003 236, 1004 ); 1005 }; 1006 Tab2 = { 1007 Frame = "{{0, 0}, {200, 100}}"; 1008 }; 1009 Tab3 = { 1010 Frame = "{{0, 0}, {200, 386}}"; 1011 Split0 = { 1012 Frame = "{{0, 0}, {200, 186}}"; 1013 TargetTreeTableConfiguration = ( 1014 ActiveTarget, 1015 16, 1016 TargetName, 1017 168, 1018 ); 1019 }; 1020 Split1 = { 1021 BuildStyleTreeTableConfiguration = ( 1022 IsActive, 1023 16, 1024 Name, 1025 169, 1026 ); 1027 Frame = "{{0, 195}, {200, 191}}"; 1028 }; 1029 SplitCount = 2; 1030 }; 1031 Tab4 = { 1032 ExecutableTreeTableConfiguration = ( 1033 ActiveExecutable, 1034 16, 1035 ExecutableName, 1036 217, 1037 ); 1038 Frame = "{{0, 0}, {250, 386}}"; 1039 }; 1040 Tab5 = { 1041 BreakpointsTreeTableConfiguration = ( 1042 breakpointColumn, 1043 197, 1044 enabledColumn, 1045 31, 1046 ); 1047 Frame = "{{0, 0}, {250, 100}}"; 1048 }; 1049 TabCount = 6; 1050 TabsVisible = NO; 1051 }; 1052 StatusViewVisible = YES; 1053 Template = F5534CB2020F3F8A0DCA290F; 1054 ToolbarVisible = YES; 1055 WindowLocation = "{27, 612}"; 1046 WindowLocation = "{385, 535}"; 1056 1047 }, 1057 1048 ); 1058 PBXWorkspaceStateSaveDate = 48 582334;1049 PBXWorkspaceStateSaveDate = 48675460; 1059 1050 }; 1060 1051 perUserProjectItems = { 1061 F59E8BCB02E5504501AEEDB1 = F59E8BCB02E5504501AEEDB1; 1062 F59E8BCC02E5504501AEEDB1 = F59E8BCC02E5504501AEEDB1; 1063 F59E8BCD02E5504501AEEDB1 = F59E8BCD02E5504501AEEDB1; 1064 F59E8BCE02E5504501AEEDB1 = F59E8BCE02E5504501AEEDB1; 1065 F59E8BCF02E5504501AEEDB1 = F59E8BCF02E5504501AEEDB1; 1066 F59E8BD002E5504501AEEDB1 = F59E8BD002E5504501AEEDB1; 1067 F5FF50C302E5477101AEEDB1 = F5FF50C302E5477101AEEDB1; 1068 F5FF50C502E5477101AEEDB1 = F5FF50C502E5477101AEEDB1; 1052 F50BD5BE02E6897C01AEEDB1 = F50BD5BE02E6897C01AEEDB1; 1053 F53CD13702E6A45601AEEDB1 = F53CD13702E6A45601AEEDB1; 1069 1054 }; 1070 1055 projectwideBuildSettings = { … … 1079 1064 ); 1080 1065 }; 1066 F50BD5BE02E6897C01AEEDB1 = { 1067 fRef = F5FF50BD02E53B9E01AEEDB1; 1068 isa = PBXTextBookmark; 1069 name = "FSAViewAssociationController.m: 94"; 1070 rLen = 0; 1071 rLoc = 3104; 1072 rType = 0; 1073 vrLen = 1429; 1074 vrLoc = 2322; 1075 }; 1081 1076 F5184FB202DF90C801AEEDB1 = { 1082 1077 fileReference = F5EFC2CA020A6CD101AEEDB1; … … 1084 1079 lineNumber = 162; 1085 1080 state = 1; 1081 }; 1082 F53CD13702E6A45601AEEDB1 = { 1083 fRef = F5FF50BD02E53B9E01AEEDB1; 1084 isa = PBXTextBookmark; 1085 name = "FSAViewAssociationController.m: 94"; 1086 rLen = 0; 1087 rLoc = 3104; 1088 rType = 0; 1089 vrLen = 1429; 1090 vrLoc = 2322; 1086 1091 }; 1087 1092 F574ADDB020ACAC801AEEDB1 = { … … 1111 1116 ); 1112 1117 }; 1113 F59E8BCB02E5504501AEEDB1 = {1114 fRef = F59E8BD202E5504501AEEDB1;1115 isa = PBXBookmark;1116 };1117 F59E8BCC02E5504501AEEDB1 = {1118 fRef = F59E8BD302E5504501AEEDB1;1119 isa = PBXBookmark;1120 };1121 F59E8BCD02E5504501AEEDB1 = {1122 fRef = F59E8BD402E5504501AEEDB1;1123 isa = PBXBookmark;1124 };1125 F59E8BCE02E5504501AEEDB1 = {1126 fRef = F59E8BD502E5504501AEEDB1;1127 isa = PBXBookmark;1128 };1129 F59E8BCF02E5504501AEEDB1 = {1130 fRef = F59E8BD602E5504501AEEDB1;1131 isa = PBXBookmark;1132 };1133 F59E8BD002E5504501AEEDB1 = {1134 fRef = F59E8BD102E5504501AEEDB1;1135 isa = PBXBookmark;1136 };1137 F59E8BD102E5504501AEEDB1 = {1138 isa = PBXFileReference;1139 name = NSControl.html;1140 path = /System/Library/Frameworks/AppKit.framework/Versions/C/Resources/English.lproj/Documentation/Reference/ObjC_classic/Classes/NSControl.html;1141 refType = 0;1142 };1143 F59E8BD202E5504501AEEDB1 = {1144 isa = PBXFileReference;1145 name = NSApplication.html;1146 path = /System/Library/Frameworks/AppKit.framework/Versions/C/Resources/English.lproj/Documentation/Reference/ObjC_classic/Classes/NSApplication.html;1147 refType = 0;1148 };1149 F59E8BD302E5504501AEEDB1 = {1150 isa = PBXFileReference;1151 name = NSTextField.html;1152 path = /System/Library/Frameworks/AppKit.framework/Versions/C/Resources/English.lproj/Documentation/Reference/ObjC_classic/Classes/NSTextField.html;1153 refType = 0;1154 };1155 F59E8BD402E5504501AEEDB1 = {1156 isa = PBXFileReference;1157 name = NSControl.html;1158 path = /System/Library/Frameworks/AppKit.framework/Versions/C/Resources/English.lproj/Documentation/Reference/ObjC_classic/Classes/NSControl.html;1159 refType = 0;1160 };1161 F59E8BD502E5504501AEEDB1 = {1162 isa = PBXFileReference;1163 name = NSApplication.html;1164 path = /System/Library/Frameworks/AppKit.framework/Versions/C/Resources/English.lproj/Documentation/Reference/ObjC_classic/Classes/NSApplication.html;1165 refType = 0;1166 };1167 F59E8BD602E5504501AEEDB1 = {1168 isa = PBXFileReference;1169 name = NSTextField.html;1170 path = /System/Library/Frameworks/AppKit.framework/Versions/C/Resources/English.lproj/Documentation/Reference/ObjC_classic/Classes/NSTextField.html;1171 refType = 0;1172 };1173 1118 F5EFC2CA020A6CD101AEEDB1 = { 1174 1119 uiCtxt = { … … 1187 1132 state = 1; 1188 1133 }; 1189 F5FF50C302E5477101AEEDB1 = {1190 fRef = F5FF50E202E5477201AEEDB1;1191 isa = PBXBookmark;1192 };1193 F5FF50C502E5477101AEEDB1 = {1194 fRef = F5FF50E302E5477201AEEDB1;1195 isa = PBXBookmark;1196 };1197 F5FF50E202E5477201AEEDB1 = {1198 isa = PBXFileReference;1199 name = NSWindow.html;1200 path = /System/Library/Frameworks/AppKit.framework/Versions/C/Resources/English.lproj/Documentation/Reference/ObjC_classic/Classes/NSWindow.html;1201 refType = 0;1202 };1203 F5FF50E302E5477201AEEDB1 = {1204 isa = PBXFileReference;1205 name = NSWindow.html;1206 path = /System/Library/Frameworks/AppKit.framework/Versions/C/Resources/English.lproj/Documentation/Reference/ObjC_classic/Classes/NSWindow.html;1207 refType = 0;1208 };1209 1134 } -
trunk/Cocoa/F-Script Anywhere/Source/F-Script Anywhere.pbproj/project.pbxproj
r7 r14 282 282 F5680F83020D369A01AEEC37, 283 283 F5680F7F020D35ED01AEEC37, 284 F5B11ED902E67DB101AEEDB1, 284 285 ); 285 286 isa = PBXGroup; … … 354 355 <string>F-Script Anywhere</string> 355 356 <key>CFBundleGetInfoString</key> 356 <string>F-Script Anywhere 1.1.2 a1, © 2002 Nicholas Riley</string>357 <string>F-Script Anywhere 1.1.2, © 2002 Nicholas Riley</string> 357 358 <key>CFBundleIconFile</key> 358 359 <string>Application icon</string> … … 366 367 <string>APPL</string> 367 368 <key>CFBundleShortVersionString</key> 368 <string>1.1.2 a1</string>369 <string>1.1.2</string> 369 370 <key>CFBundleSignature</key> 370 371 <string>FSAn</string> 371 372 <key>CFBundleVersion</key> 372 <string>1.1.2 a1</string>373 <string>1.1.2</string> 373 374 <key>NSMainNibFile</key> 374 375 <string>MainMenu</string> … … 701 702 path = /System/Library/Frameworks/Carbon.framework; 702 703 refType = 0; 704 }; 705 F5B11ED902E67DB101AEEDB1 = { 706 isa = PBXFileReference; 707 path = VERSION; 708 refType = 4; 703 709 }; 704 710 F5EFC2C3020A6C2601AEEDB1 = { -
trunk/Cocoa/F-Script Anywhere/Source/FSAController.h
r7 r14 27 27 #import <AppKit/AppKit.h> 28 28 #import <FScript/FSInterpreterView.h> 29 #import <FScript/System.h> 29 30 30 31 @class FSAViewAssociationController; … … 32 33 @interface FSAController : NSWindowController { 33 34 IBOutlet FSInterpreterView *interpreterView; 35 System *system; 34 36 FSAViewAssociationController *viewAssociationController; 35 37 } 36 38 37 39 - (IBAction)setFloating:(id)sender; 38 - (IBAction) associateInterface:(id)sender;40 - (IBAction)FSA_associateWithInterface:(id)sender; 39 41 40 42 - (FSInterpreterView *)interpreterView; 43 - (System *)system; 41 44 42 45 @end -
trunk/Cocoa/F-Script Anywhere/Source/FSAController.m
r7 r14 28 28 #import "FSAViewAssociationController.h" 29 29 #import "FSAnywhere.h" 30 #import <FScript/FSInterpreter.h> 30 31 31 32 @class ShellView; … … 36 37 @end 37 38 38 @interface FSInterpreterView ( Private)39 @interface FSInterpreterView (FSAWorkaround) 39 40 - (CLIView *)cliView; 40 41 @end … … 93 94 } 94 95 if (insertIntoMenu) { 95 NSMenu *fsaMenu = [[NSMenu allocWithZone: [NSMenu menuZone]] initWithTitle:NSLocalizedStringFromTableInBundle(@"FSA", @"FSA", bundle, @"Title of F-Script Anywhere menu")];96 97 item = [insertIntoMenu insertItemWithTitle: NSLocalizedStringFromTableInBundle(@"FSA", @"FSA", bundle, @"Title of F-Script Anywhere menu") action:NULL keyEquivalent:@"" atIndex:insertLoc];96 NSMenu *fsaMenu = [[NSMenu allocWithZone: [NSMenu menuZone]] initWithTitle:NSLocalizedStringFromTableInBundle(@"FSA", @"FSA", bundle, @"Title of F-Script Anywhere menu")]; 97 98 item = [insertIntoMenu insertItemWithTitle: NSLocalizedStringFromTableInBundle(@"FSA", @"FSA", bundle, @"Title of F-Script Anywhere menu") action:NULL keyEquivalent:@"" atIndex:insertLoc]; 98 99 [insertIntoMenu setSubmenu:fsaMenu forItem:item]; 99 100 [fsaMenu release]; 100 101 101 102 // Add the items for the commands. 102 item = [fsaMenu addItemWithTitle: NSLocalizedStringFromTableInBundle(@"New F-Script Workspace", @"FSA", bundle, @"Title of F-Script Workspace menu item") action:@selector(createInterpreterWindow:) keyEquivalent:@""];103 item = [fsaMenu addItemWithTitle: NSLocalizedStringFromTableInBundle(@"New F-Script Workspace", @"FSA", bundle, @"Title of F-Script Workspace menu item") action:@selector(createInterpreterWindow:) keyEquivalent: @""]; 103 104 [item setTarget: self]; 105 [fsaMenu addItemWithTitle: NSLocalizedStringFromTableInBundle(@"Associate With Interface", @"FSA", bundle, @"Title of Associate with Interface menu item") action: @selector(FSA_associateWithInterface:) keyEquivalent: @""]; 104 106 [fsaMenu addItem: [NSMenuItem separatorItem]]; 105 item = [fsaMenu addItemWithTitle: NSLocalizedStringFromTableInBundle(@"About F-Script AnywhereÉ", @"FSA", bundle, @"Title of Info Panel menu item") action:@selector(showInfo:) keyEquivalent:@""];107 item = [fsaMenu addItemWithTitle: NSLocalizedStringFromTableInBundle(@"About F-Script AnywhereÉ", @"FSA", bundle, @"Title of Info Panel menu item") action:@selector(showInfo:) keyEquivalent: @""]; 106 108 [item setTarget: self]; 107 109 } … … 160 162 #warning this should go away when F-Script properly accepts firstResponder on the InterpreterView 161 163 [window makeFirstResponder: (NSView *)[[[self interpreterView] cliView] shellView]]; 164 system = [[[self interpreterView] interpreter] objectForIdentifier: @"sys" found: NULL]; 165 [system retain]; 166 NSAssert1([system isKindOfClass: [System class]], @"Initial value bound to identifier 'sys' is not a System object, but %@", system); 162 167 } 163 168 … … 165 170 } 166 171 172 - (void)dealloc; 173 { 174 [system release]; 175 [super dealloc]; 176 } 177 167 178 - (FSInterpreterView *)interpreterView; 168 179 { … … 170 181 } 171 182 183 - (System *)system; 184 { 185 return system; 186 } 187 172 188 - (IBAction)setFloating:(id)sender; 173 189 { … … 175 191 } 176 192 177 - (IBAction)associateInterface:(id)sender; 178 { 179 FSALog(@"associating interface"); 193 - (IBAction)FSA_associateWithInterface:(id)sender; 194 { 180 195 NS_DURING 181 FSALog(@"controller?");182 196 if (viewAssociationController == nil) { 183 NSLog(@"creating controller"); 184 viewAssociationController = [[FSAViewAssociationController alloc] initWithInterpreter: [interpreterView interpreter]]; 185 } 186 FSALog(@"got controller %@", viewAssociationController); 197 viewAssociationController = [[FSAViewAssociationController alloc] initWithFSAController: self]; 198 } 187 199 [viewAssociationController showWindow: self]; 188 200 NS_HANDLER -
trunk/Cocoa/F-Script Anywhere/Source/FSAViewAssociationController.h
r7 r14 26 26 27 27 #import <Cocoa/Cocoa.h> 28 #import <FScript/FSInterpreter.h> 28 29 @class FSInterpreter, System; 30 @class FSAController; 29 31 30 32 @interface FSAViewAssociationController : NSWindowController 31 33 { 32 34 IBOutlet NSButton *captureButton; 35 IBOutlet NSButton *browseButton; 33 36 IBOutlet NSButton *associateButton; 34 37 IBOutlet NSTextField *descriptionField; … … 38 41 NSMenu *viewHierarchyMenu; 39 42 FSInterpreter *interpreter; 43 System *system; 40 44 } 41 45 42 - (id)initWith Interpreter:(FSInterpreter *)anInterpreter;46 - (id)initWithFSAController:(FSAController *)fsa; 43 47 44 48 - (IBAction)update:(id)sender; 45 49 - (IBAction)captureView:(id)sender; 46 50 - (IBAction)defineVariable:(id)sender; 51 - (IBAction)viewInObjectBrowser:(id)sender; 47 52 48 53 @end -
trunk/Cocoa/F-Script Anywhere/Source/FSAViewAssociationController.m
r7 r14 26 26 27 27 #import "FSAViewAssociationController.h" 28 #import "FSAController.h" 29 #import "FSAnywhere.h" 30 #import <FScript/FSInterpreter.h> 31 #import <FScript/System.h> 32 33 // XXX workaround for lack of identifier validation; should go away when F-Script adds (promised) direct support for this 34 @interface Compiler 35 + (BOOL)isValidIndentifier:(NSString *)str; 36 @end 28 37 29 38 @implementation FSAViewAssociationController 30 39 31 - (id)initWith Interpreter:(FSInterpreter *)anInterpreter;40 - (id)initWithFSAController:(FSAController *)fsa; 32 41 { 33 42 self = [super initWithWindowNibName: @"FSAViewAssociationPanel"]; 34 43 35 44 if (self != nil) { 36 interpreter = [anInterpreter retain]; 45 interpreter = [[[fsa interpreterView] interpreter] retain]; 46 system = [fsa system]; 37 47 [self window]; 38 48 [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(controlTextDidChange:) name: NSControlTextDidChangeNotification object: variableNameField]; 49 [[captureButton cell] setShowsStateBy: NSContentsCellMask | NSChangeGrayCellMask]; 39 50 [self update: nil]; 40 51 } … … 53 64 - (IBAction)update:(id)sender; 54 65 { 55 [associateButton setEnabled: selectedView != nil && [[variableNameField stringValue] length] != 0]; 66 NSString *variableName = [variableNameField stringValue]; 67 BOOL canAssignToVariable = NO; 68 [browseButton setEnabled: selectedView != nil]; 69 [statusField setStringValue: @""]; 70 if ([variableName length] != 0) { 71 if (![Compiler isValidIndentifier: variableName]) { 72 [statusField setStringValue: @"Invalid name: contains spaces, punctuation or non-ASCII characters"]; 73 } else if (selectedView != nil) { 74 [statusField setStringValue: @"Click ÒAssociateÓ to assign to this variable"]; 75 canAssignToVariable = YES; 76 } 77 } 78 [associateButton setEnabled: canAssignToVariable]; 56 79 [variableNameField setEnabled: [captureButton state] == NSOffState]; 57 80 } … … 59 82 - (void)stopCapturing; 60 83 { 84 FSALog(@"stopping capture"); 61 85 [captureButton setState: NSOffState]; 62 86 [statusField setStringValue: @""]; 63 87 [self update: nil]; 64 88 [variableNameField becomeFirstResponder]; 89 } 90 91 - (void)_addElementToMenu:(id)element; 92 { 93 NSMenuItem *item; 94 if (element == nil) return; 95 item = [viewHierarchyMenu addItemWithTitle: [@" " 96 stringByAppendingString: NSStringFromClass([element class])] 97 action: @selector(elementSelected:) 98 keyEquivalent: @""]; 99 [item setTarget: self]; 100 [item setRepresentedObject: element]; 65 101 } 66 102 … … 70 106 NSView *view, *superView = nil, *contentView; 71 107 NSWindow *eventWindow; 72 NSMenuItem *item; 108 109 FSALog(@"capturing one"); 110 [captureButton setState: NSOnState]; 73 111 74 112 event = [NSApp nextEventMatchingMask: NSLeftMouseDownMask | NSRightMouseDownMask | NSKeyUpMask … … 90 128 NS_VOIDRETURN; 91 129 } 130 [viewHierarchyMenu addItemWithTitle: @"View" action: nil keyEquivalent: @""]; 131 [self _addElementToMenu: view]; 132 superView = view; 92 133 do { 93 if (superView == nil) superView = view; 94 else superView = [superView superview]; 134 superView = [superView superview]; 95 135 if (superView == nil) break; 96 item = [viewHierarchyMenu addItemWithTitle: NSStringFromClass([superView class]) 97 action: @selector(viewSelected:) 98 keyEquivalent: @""]; 99 [item setTarget: self]; 100 [item setRepresentedObject: superView]; 136 [self _addElementToMenu: superView]; 101 137 } while (superView != contentView); 102 138 [viewHierarchyMenu addItem: [NSMenuItem separatorItem]]; 103 item = [viewHierarchyMenu addItemWithTitle: NSStringFromClass([eventWindow class]) 104 action: @selector(viewSelected:) 105 keyEquivalent: @""]; 106 [item setTarget: self]; 107 [item setRepresentedObject: eventWindow]; 139 [viewHierarchyMenu addItemWithTitle: @"Window" action: nil keyEquivalent: @""]; 140 [self _addElementToMenu: eventWindow]; 108 141 NS_HANDLER 109 142 [descriptionField setStringValue: … … 111 144 NS_ENDHANDLER 112 145 [NSMenu popUpContextMenu: viewHierarchyMenu withEvent: event forView: view]; 146 if ([captureButton state] == NSOnState) 147 [self captureOneView]; 113 148 } 114 149 115 150 - (IBAction)captureView:(id)sender 116 151 { 117 [statusField setStringValue: @"Click to select; press any key to cancel."];152 [statusField setStringValue: @"Click inside one of this applicationÕs windows to select."]; 118 153 [selectedView release]; selectedView = nil; 119 154 [self update: nil]; … … 121 156 } 122 157 123 - (void) viewSelected:(NSMenuItem *)sender;158 - (void)elementSelected:(NSMenuItem *)sender; 124 159 { 125 NSView *view = [sender representedObject]; 160 NSView *element = [sender representedObject]; 161 FSALog(@"element selected: %@", sender); 126 162 NS_DURING 127 [descriptionField setStringValue: [ viewdescription]];163 [descriptionField setStringValue: [element description]]; 128 164 [selectedView release]; 129 selectedView = [ viewretain];165 selectedView = [element retain]; 130 166 NS_HANDLER 131 167 [descriptionField setStringValue: … … 136 172 } 137 173 138 - (IBAction)defineVariable:(id)sender 174 - (IBAction)defineVariable:(id)sender; 139 175 { 140 [statusField setStringValue: @"AssociatingÉ"]; 176 #warning this should change when F-Script supports a public API for identifier validation 141 177 NS_DURING 142 178 NSString *variableName = [variableNameField stringValue]; 179 [statusField setStringValue: @"AssociatingÉ"]; 143 180 [interpreter setObject: selectedView forIdentifier: variableName]; 144 181 [statusField setStringValue: [NSString stringWithFormat: @"Assigned variable Ò%@Ó", variableName]]; … … 146 183 [statusField setStringValue: [NSString stringWithFormat: @"Assocation failed: %@", localException]]; 147 184 NS_ENDHANDLER 185 } 186 187 - (IBAction)viewInObjectBrowser:(id)sender; 188 { 189 FSALog(@"system: %@", system); 190 [system browse: selectedView]; 191 [statusField setStringValue: @"Opened object browser"]; 148 192 } 149 193 -
trunk/Cocoa/F-Script Anywhere/Source/FSAnywhere.h
r7 r14 9 9 #import <Foundation/Foundation.h> 10 10 11 #define FSA_DEBUG 111 #define FSA_DEBUG 0 12 12 #define FSA_VERSION "1.1.2" 13 13 -
trunk/Cocoa/F-Script Anywhere/Source/NJRLabeledImageCell.m
r7 r14 96 96 - (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView { 97 97 if (image != nil) { 98 NSSize imageSize , repSize;98 NSSize imageSize; 99 99 NSRect imageFrame; 100 NSArray *imageReps;101 int i, repCount;102 100 NSImageRep *preferredRep, *rep; 103 101 … … 107 105 if (preferredRep != nil && abs([preferredRep size].width - imageSize.width) < 1 && abs([preferredRep size].height != imageSize.height) < 1) { 108 106 [self setImage: [imageCacheSource cachedImage]]; 109 // NSLog(@"%@ accepting cached image: %@", [self stringValue], preferredRep);107 FSALog(@"%@ accepting cached image: %@", [self stringValue], preferredRep); 110 108 } else { 111 // NSLog(@"%@ rejecting cached image: %@", [self stringValue], preferredRep); 112 imageReps = [image representations]; 113 repCount = [imageReps count]; 109 NSArray *imageReps = [image representations]; 110 int i, repCount = [imageReps count]; 111 NSSize repSize; 112 114 113 preferredRep = [imageReps objectAtIndex: 0]; 114 FSALog(@"%@ rejecting cached image: %@", [self stringValue], preferredRep); 115 115 for (i = 1 ; i < repCount ; i++) { 116 116 rep = [imageReps objectAtIndex: i]; … … 140 140 */ 141 141 // Begin workaround code for bug in OS X 10.1 (removeRepresentation: has no effect) 142 // This uses a lot more memory because the icons aren't shared - punting.143 142 if ([preferredRep size].width > imageSize.width || [preferredRep size].height > imageSize.height) { 144 143 NSImage *scaledImage = [[NSImage alloc] initWithSize: imageSize]; 145 144 NSRect rect = { NSZeroPoint, imageSize }; 146 // NSLog(@"rescaling %@", [self stringValue]); 145 FSALog(@"rescaling %@", [self stringValue]); 146 [scaledImage setFlipped: [controlView isFlipped]]; // XXX this works, but is correct? 147 147 [scaledImage lockFocus]; 148 148 [preferredRep drawInRect: rect]; -
trunk/Cocoa/F-Script Anywhere/Source/Read Me
r7 r14 1 F-Script Anywhere 1.1.2 a1 [17July 2002]2 ======================= ==1 F-Script Anywhere 1.1.2 [18 July 2002] 2 ======================= 3 3 4 4 Add a F-Script interpreter to Cocoa applications dynamically. … … 11 11 ----------- 12 12 13 Ever wanted to inspect a Cocoa application 's objects from the inside?13 Ever wanted to inspect a Cocoa applicationÕs objects from the inside? 14 14 Frustrated with using GDB to debug Objective-C? 15 15 … … 24 24 directory, such as /Library/Frameworks or ~/Library/Frameworks. 25 25 26 F-Script Anywhere 1.1.2 was tested with FScript.framework 1.2. 1 (20020422)27 and Mac OS X 10.1.5 (5S66). It may or may not work with earlier or 28 later versions, I don't know. If you are using an earlier F-Script 29 version, please upgrade.26 F-Script Anywhere 1.1.2 was tested with FScript.framework 1.2.2 27 (20020604) and Mac OS X 10.1.5 (5S66). It may or may not work with 28 earlier or later versions, I don't know. If you are using an earlier 29 F-Script version, please upgrade. 30 30 31 31 … … 127 127 Q. How do you access user interface elements? 128 128 129 A. Like this:129 A. One way is to access a window and its views programmatically: 130 130 131 131 > app := NSApplication sharedApplication … … 152 152 > fswView := fsw contentView 153 153 154 At this point, click "New Browser: Object...", click on fswView, 155 then click 'subviews' in the message list. You can use 'subviews' 154 To open an F-Script object browser on fswView, type: 155 156 > sys browse: fswView 157 158 Or, click ÒNew Browser: Object...Ó, then click on fswView. 159 Click 'subviews' in the message list. You can use 'subviews' 156 160 repeatedly on container views if needed. 157 161 158 162 159 Q. That's too hard, especially all that scrolling. 160 161 A. [XXX fix me for 1.1.2 support] 162 163 164 Q. I don't like F-Script's syntax. I don't like the object browser. 163 Q. ThatÕs too hard, especially all that scrolling. 164 165 A. If you need to access a view (such as a button or text field) or 166 window, youÕre in luck. Click in an F-Script workspace window, then 167 choose ÒAssociate With InterfaceÓ from the ÒFSAÓ menu. 168 Follow the instructions in the window to select a user interface 169 element, view it in an object browser or assign it to a variable. 170 171 172 Q. F-Script Anywhere fails miserably on Jaguar. 173 174 A. So IÕve heard (I donÕt have access to Jaguar developer seeds). This 175 is an issue with libPatch, and affects far more than F-Script Anywhere. 176 Default Folder X and UnsanityÕs haxies are similarly rendered useless. 177 A Jaguar-compatible replacement for libPatch is under development, 178 but it does not yet contain support for applications such as F-Script 179 Anywhere (which is unique in its use of libPatch). IÕll fix this 180 as soon as it does. 181 182 183 Q. I don't like F-ScriptÕs syntax. I don't like the object browser. 165 184 I don't like you either. 166 185 167 A. I didn 't write F-Script. Please address your questions to168 F-Script 's author or the F-Script mailing list.186 A. I didnÕt write F-Script. Please address your questions to 187 F-ScriptÕs author or the F-Script mailing list. 169 188 170 189 <http://www.fscript.org/contacts.htm> … … 185 204 --------------- 186 205 187 1.1.2 a1 - 17 July 2002- fixed more startup issues with list management;206 1.1.2 - 18 July 2002 - fixed more startup issues with list management; 188 207 properly scale icons of apps which have no 189 small icons; added UI association interface208 small icons; added user interface association 190 209 1.1.1 - 3 July 2002 - fixed inefficiencies responsible for long 191 210 startup time; reorganized Window menu; support -
trunk/Cocoa/F-Script Anywhere/Source/VERSION
r7 r14 1 1.1.2 a11 1.1.2
Note:
See TracChangeset
for help on using the changeset viewer.