57 " |
61 " |
58 ! |
62 ! |
59 |
63 |
60 examples |
64 examples |
61 " |
65 " |
|
66 usually direct access to FileDialog is not recommended; |
|
67 please use the Dialog interface, which is able to dispatch to |
|
68 alternative file choosers if the settings say so |
|
69 (native dialogs, for example): |
62 [exBegin] |
70 [exBegin] |
63 FileDialog open |
71 |fileOrNil| |
|
72 |
|
73 fileOrNil := Dialog requestFileName:'Choose a File'. |
|
74 Transcript showCR:fileOrNil |
64 [exEnd] |
75 [exEnd] |
65 |
76 |
|
77 simple examples: |
66 [exBegin] |
78 [exBegin] |
67 FileDialog |
79 FileDialog |
68 requestFileName:'enter a fileName:' |
80 requestFileName:'enter a fileName:' |
69 default:'' |
81 default:'' |
70 version:nil |
82 version:nil |
71 ifFail:['none'] |
83 ifFail:['none'] |
72 pattern:'*.conf' |
84 pattern:'*.conf' |
73 fromDirectory:'/etc' |
85 fromDirectory:'/etc' |
74 whenBoxCreatedEvaluate:nil. |
86 whenBoxCreatedEvaluate:nil. |
75 [exEnd] |
87 [exEnd] |
|
88 |
76 [exBegin] |
89 [exBegin] |
77 |fd| |
90 |fd| |
78 |
91 |
79 fd := FileDialog new. |
92 fd := FileDialog new. |
80 fd multipleSelect:true. |
93 fd multipleSelect:true. |
81 fd open |
94 fd open |
82 [exEnd] |
95 [exEnd] |
83 |
96 |
|
97 [exBegin] |
|
98 |fd| |
|
99 |
|
100 fd := FileDialog new. |
|
101 fd multipleSelect:true. |
|
102 fd browseMenuItemVisible:false. |
|
103 fd open |
|
104 [exEnd] |
|
105 |
84 Adding custom components: |
106 Adding custom components: |
85 [exBegin] |
107 [exBegin] |
86 DialogBox aboutToOpenBoxNotificationSignal handle:[:ex | |
108 Dialog modifyingBoxWith:[:dialog | |
87 | fmtBox | |
109 | fmtBox | |
88 |
110 |
89 fmtBox := ComboListView new. |
111 fmtBox := ComboListView new. |
90 fmtBox list: #('Comma Separated Values (.csv)' |
112 fmtBox list: #('Comma Separated Values (.csv)' |
91 'Microsoft Excel (.xls)' |
113 'Microsoft Excel (.xls)' |
92 'Microsoft Excel XML (.xlsx)') . |
114 'Microsoft Excel XML (.xlsx)') . |
93 fmtBox model:'Select...' asValue. |
115 fmtBox model:'Select...' asValue. |
94 ex application addComponent: fmtBox. |
116 dialog application addComponent: fmtBox. |
95 ex proceed. |
|
96 ] do:[ |
117 ] do:[ |
97 Dialog requestFileName: 'Save file as...' |
118 Dialog requestFileName: 'Save file as...' |
98 ] |
119 ] |
99 [exEnd] |
120 [exEnd] |
100 |
121 |
761 " |
782 " |
762 |
783 |
763 <resource: #canvas> |
784 <resource: #canvas> |
764 |
785 |
765 ^ |
786 ^ |
766 #(FullSpec |
787 #(FullSpec |
767 name: windowSpec |
788 name: windowSpec |
768 window: |
789 window: |
769 (WindowSpec |
790 (WindowSpec |
770 label: 'FileDialog' |
791 label: 'FileDialog' |
771 name: 'FileDialog' |
792 name: 'FileDialog' |
772 min: (Point 10 10) |
793 min: (Point 10 10) |
773 bounds: (Rectangle 0 0 400 400) |
794 bounds: (Rectangle 0 0 400 400) |
774 menu: mainMenu |
795 menu: mainMenu |
775 performer: treeBrowser |
796 performer: treeBrowser |
776 ) |
797 ) |
777 component: |
798 component: |
778 (SpecCollection |
799 (SpecCollection |
779 collection: ( |
800 collection: ( |
780 (VerticalPanelViewSpec |
801 (VerticalPanelViewSpec |
781 name: 'FilePanel' |
802 name: 'FilePanel' |
782 layout: (LayoutFrame 0 0 0 0 0 1 -30 1) |
803 layout: (LayoutFrame 0 0 0 0 0 1 -30 1) |
783 horizontalLayout: fit |
804 horizontalLayout: fit |
784 verticalLayout: bottomFit |
805 verticalLayout: bottomFit |
785 horizontalSpace: 0 |
806 horizontalSpace: 0 |
786 verticalSpace: 3 |
807 verticalSpace: 3 |
787 elementsChangeSize: true |
808 elementsChangeSize: true |
788 component: |
809 component: |
789 (SpecCollection |
810 (SpecCollection |
790 collection: ( |
811 collection: ( |
791 (ViewSpec |
812 (ViewSpec |
792 name: 'FilePart' |
813 name: 'FilePart' |
793 component: |
814 component: |
794 (SpecCollection |
815 (SpecCollection |
795 collection: ( |
816 collection: ( |
796 (MenuPanelSpec |
817 (MenuPanelSpec |
797 name: 'ToolBar1' |
818 name: 'ToolBar1' |
798 layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 40 0) |
819 layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 40 0) |
799 tabable: true |
820 tabable: true |
800 menu: toolBarMenu |
821 menu: toolBarMenu |
801 textDefault: true |
822 textDefault: true |
802 ) |
823 ) |
803 (VariableHorizontalPanelSpec |
824 (VariableHorizontalPanelSpec |
804 name: 'DeviceAndFilterPanel' |
825 name: 'DeviceAndFilterPanel' |
805 layout: (LayoutFrame 0 0 40 0 0 1 70 0) |
826 layout: (LayoutFrame 0 0 40 0 0 1 70 0) |
806 level: 1 |
827 level: 1 |
807 showHandle: true |
828 showHandle: true |
808 component: |
829 component: |
809 (SpecCollection |
830 (SpecCollection |
810 collection: ( |
831 collection: ( |
811 (ViewSpec |
832 (ViewSpec |
812 name: 'Box1' |
833 name: 'Box1' |
813 component: |
834 component: |
814 (SpecCollection |
835 (SpecCollection |
815 collection: ( |
836 collection: ( |
816 (ComboListSpec |
837 (ComboListSpec |
817 name: 'ComboList1' |
838 name: 'ComboList1' |
818 layout: (LayoutFrame 1 0 1 0.0 -1 1 -1 1) |
839 layout: (LayoutFrame 1 0 1 0.0 -1 1 -1 1) |
819 visibilityChannel: driveSelectorVisible |
840 visibilityChannel: driveSelectorVisible |
820 model: selectedDeviceDrive |
841 model: selectedDeviceDrive |
821 comboList: listOfDeviceDrives |
842 comboList: listOfDeviceDrives |
822 useIndex: false |
843 useIndex: false |
823 hidePullDownMenuButton: false |
844 hidePullDownMenuButton: false |
824 ) |
|
825 ) |
845 ) |
826 |
846 ) |
827 ) |
847 |
828 ) |
848 ) |
829 (ViewSpec |
849 ) |
830 name: 'Box2' |
850 (ViewSpec |
831 component: |
851 name: 'Box2' |
832 (SpecCollection |
852 component: |
833 collection: ( |
853 (SpecCollection |
834 (LabelSpec |
854 collection: ( |
835 label: 'Filter:' |
855 (LabelSpec |
836 name: 'FilterLabel' |
856 label: 'Filter:' |
837 layout: (LayoutFrame 1 0 2 0 59 0 -2 1) |
857 name: 'FilterLabel' |
838 translateLabel: true |
858 layout: (LayoutFrame 1 0 2 0 59 0 -2 1) |
839 adjust: right |
859 translateLabel: true |
840 ) |
860 adjust: right |
841 (InputFieldSpec |
|
842 name: 'FilterEntryField' |
|
843 layout: (LayoutFrame 60 0 -27 1 -2 1 -2 1) |
|
844 model: filterHolder |
|
845 immediateAccept: true |
|
846 acceptOnReturn: true |
|
847 acceptOnTab: true |
|
848 acceptOnLostFocus: true |
|
849 acceptOnPointerLeave: false |
|
850 postBuildCallback: postBuildFilterField: |
|
851 ) |
|
852 ) |
861 ) |
853 |
862 (InputFieldSpec |
854 ) |
863 name: 'FilterEntryField' |
855 ) |
864 layout: (LayoutFrame 60 0 -27 1 -2 1 -2 1) |
|
865 model: filterHolder |
|
866 immediateAccept: true |
|
867 acceptOnReturn: true |
|
868 acceptOnTab: true |
|
869 acceptOnLostFocus: true |
|
870 acceptOnPointerLeave: false |
|
871 postBuildCallback: postBuildFilterField: |
|
872 ) |
|
873 ) |
|
874 |
|
875 ) |
856 ) |
876 ) |
|
877 ) |
|
878 |
|
879 ) |
|
880 handles: (Any 0.29729729729729998 1.0) |
|
881 ) |
|
882 (SubCanvasSpec |
|
883 name: 'DirectoryTreeBrowser' |
|
884 layout: (LayoutFrame 0 0.0 70 0 0 1.0 -30 1) |
|
885 tabable: true |
|
886 hasHorizontalScrollBar: false |
|
887 hasVerticalScrollBar: false |
|
888 majorKey: DirectoryTreeBrowser |
|
889 subAspectHolders: |
|
890 (Array |
857 |
891 |
858 ) |
892 (SubChannelInfoSpec |
859 handles: (Any 0.2972972972973 1.0) |
893 subAspect: filterModel |
860 ) |
894 aspect: filterHolder |
861 (SubCanvasSpec |
895 ) |
862 name: 'DirectoryTreeBrowser' |
896 (SubChannelInfoSpec |
863 layout: (LayoutFrame 0 0.0 70 0 0 1.0 -30 1) |
897 subAspect: rootHolder |
864 tabable: true |
898 aspect: rootDirectoryHolder |
865 hasHorizontalScrollBar: false |
899 ) |
866 hasVerticalScrollBar: false |
900 |
867 majorKey: DirectoryTreeBrowser |
901 (SubChannelInfoSpec |
868 subAspectHolders: |
902 subAspect: showHiddenFiles |
869 (Array |
903 aspect: showHiddenFiles |
870 |
904 ) |
871 (SubChannelInfoSpec |
905 ) |
872 subAspect: filterModel |
906 createNewApplication: true |
873 aspect: filterHolder |
907 createNewBuilder: true |
874 ) |
908 postBuildCallback: postBuildTreeBrowser: |
875 (SubChannelInfoSpec |
|
876 subAspect: rootHolder |
|
877 aspect: rootDirectoryHolder |
|
878 ) |
|
879 |
|
880 (SubChannelInfoSpec |
|
881 subAspect: showHiddenFiles |
|
882 aspect: showHiddenFiles |
|
883 ) |
|
884 ) |
|
885 createNewApplication: true |
|
886 createNewBuilder: true |
|
887 postBuildCallback: postBuildTreeBrowser: |
|
888 ) |
|
889 (LabelSpec |
|
890 label: 'Filename:' |
|
891 name: 'FilenameLabel' |
|
892 layout: (LayoutFrame 3 0 -25 1 90 0 -1 1) |
|
893 translateLabel: true |
|
894 labelChannel: filenameLabelHolder |
|
895 adjust: left |
|
896 ) |
|
897 (FilenameInputFieldSpec |
|
898 name: 'FilenameEntryField' |
|
899 layout: (LayoutFrame 90 0 -25 1 -2 1 -1 1) |
|
900 tabable: true |
|
901 model: filenameHolder |
|
902 immediateAccept: false |
|
903 acceptOnPointerLeave: false |
|
904 hasKeyboardFocusInitially: true |
|
905 postBuildCallback: postBuildFileNameField: |
|
906 ) |
|
907 ) |
909 ) |
908 |
910 (LabelSpec |
909 ) |
911 label: 'Filename:' |
910 extent: (Point 400 370) |
912 name: 'FilenameLabel' |
911 ) |
913 layout: (LayoutFrame 3 0 -25 1 90 0 -1 1) |
|
914 translateLabel: true |
|
915 labelChannel: filenameLabelHolder |
|
916 adjust: left |
|
917 ) |
|
918 (FilenameInputFieldSpec |
|
919 name: 'FilenameEntryField' |
|
920 layout: (LayoutFrame 90 0 -25 1 -2 1 -1 1) |
|
921 tabable: true |
|
922 model: filenameHolder |
|
923 immediateAccept: false |
|
924 acceptOnPointerLeave: true |
|
925 hasKeyboardFocusInitially: true |
|
926 postBuildCallback: postBuildFileNameField: |
|
927 ) |
|
928 ) |
|
929 |
|
930 ) |
|
931 extent: (Point 400 370) |
912 ) |
932 ) |
913 |
933 ) |
914 ) |
934 |
915 postBuildCallback: postBuildVerticalPanelView: |
935 ) |
916 ) |
936 postBuildCallback: postBuildVerticalPanelView: |
917 (HorizontalPanelViewSpec |
937 ) |
918 name: 'ButtonPanel' |
938 (HorizontalPanelViewSpec |
919 layout: (LayoutFrame 0 0.0 -30 1 0 1 0 1) |
939 name: 'ButtonPanel' |
920 visibilityChannel: buttonPanelVisibleHolder |
940 layout: (LayoutFrame 0 0.0 -30 1 0 1 0 1) |
921 horizontalLayout: fitSpace |
941 visibilityChannel: buttonPanelVisibleHolder |
922 verticalLayout: center |
942 horizontalLayout: fitSpace |
923 horizontalSpace: 3 |
943 verticalLayout: center |
924 verticalSpace: 3 |
944 horizontalSpace: 3 |
925 reverseOrderIfOKAtLeft: true |
945 verticalSpace: 3 |
926 component: |
946 reverseOrderIfOKAtLeft: true |
927 (SpecCollection |
947 component: |
928 collection: ( |
948 (SpecCollection |
929 (ActionButtonSpec |
949 collection: ( |
930 label: 'Cancel' |
950 (ActionButtonSpec |
931 name: 'cancelButton' |
951 label: 'Cancel' |
932 translateLabel: true |
952 name: 'cancelButton' |
933 labelChannel: cancelLabelHolder |
953 translateLabel: true |
934 tabable: true |
954 labelChannel: cancelLabelHolder |
935 model: doCancel |
955 tabable: true |
936 extent: (Point 129 25) |
956 model: doCancel |
937 ) |
957 extent: (Point 128 28) |
938 (ActionButtonSpec |
958 usePreferredHeight: true |
939 label: 'Append' |
|
940 name: 'appendButton' |
|
941 visibilityChannel: appendButtonVisibleHolder |
|
942 translateLabel: true |
|
943 labelChannel: appendLabelHolder |
|
944 tabable: true |
|
945 model: appendPressed |
|
946 extent: (Point 129 25) |
|
947 ) |
|
948 (ActionButtonSpec |
|
949 label: 'OK' |
|
950 name: 'okButton' |
|
951 translateLabel: true |
|
952 labelChannel: okLabelHolder |
|
953 tabable: true |
|
954 model: okPressed |
|
955 isDefault: true |
|
956 extent: (Point 130 25) |
|
957 ) |
|
958 ) |
959 ) |
959 |
960 (ActionButtonSpec |
960 ) |
961 label: 'Append' |
961 keepSpaceForOSXResizeHandleH: true |
962 name: 'appendButton' |
962 ) |
963 visibilityChannel: appendButtonVisibleHolder |
|
964 translateLabel: true |
|
965 labelChannel: appendLabelHolder |
|
966 tabable: true |
|
967 model: appendPressed |
|
968 extent: (Point 128 28) |
|
969 usePreferredHeight: true |
|
970 ) |
|
971 (ActionButtonSpec |
|
972 label: 'OK' |
|
973 name: 'okButton' |
|
974 translateLabel: true |
|
975 labelChannel: okLabelHolder |
|
976 tabable: true |
|
977 model: okPressed |
|
978 isDefault: true |
|
979 extent: (Point 128 28) |
|
980 usePreferredHeight: true |
|
981 ) |
|
982 ) |
|
983 |
|
984 ) |
|
985 keepSpaceForOSXResizeHandleH: true |
963 ) |
986 ) |
964 |
987 ) |
965 ) |
988 |
966 ) |
989 ) |
|
990 ) |
967 ! ! |
991 ! ! |
968 |
992 |
969 !FileDialog class methodsFor:'menu specs'! |
993 !FileDialog class methodsFor:'menu specs'! |
970 |
994 |
971 mainMenu |
995 mainMenu |