FileDialog.st
branchjv
changeset 15566 184cea584be5
parent 13289 cc75e3cd0362
parent 15451 62459e7da660
child 15726 42395c00ce64
equal deleted inserted replaced
13752:25c2a13f00c5 15566:184cea584be5
       
     1 "{ Encoding: utf8 }"
       
     2 
     1 "
     3 "
     2  COPYRIGHT (c) 2002 by eXept Software AG
     4  COPYRIGHT (c) 2002 by eXept Software AG
     3               All Rights Reserved
     5               All Rights Reserved
     4 
     6 
     5  This software is furnished under a license and may be used
     7  This software is furnished under a license and may be used
     8  be provided or otherwise made available to, or used by, any
    10  be provided or otherwise made available to, or used by, any
     9  other person.  No title to or ownership of the software is
    11  other person.  No title to or ownership of the software is
    10  hereby transferred.
    12  hereby transferred.
    11 "
    13 "
    12 "{ Package: 'stx:libtool' }"
    14 "{ Package: 'stx:libtool' }"
       
    15 
       
    16 "{ NameSpace: Smalltalk }"
    13 
    17 
    14 SimpleDialog subclass:#FileDialog
    18 SimpleDialog subclass:#FileDialog
    15 	instanceVariableNames:'aspects treeBrowser directory pattern filterHolder initialText
    19 	instanceVariableNames:'aspects treeBrowser directory pattern filterHolder initialText
    16 		multipleSelect doubleClickAction cancelLabelHolder okLabelHolder
    20 		multipleSelect doubleClickAction cancelLabelHolder okLabelHolder
    17 		startFilename result filterField filenameField viewFiles
    21 		startFilename result filterField filenameField viewFiles
    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
  1172             activeHelpKey: openFileBrowser
  1196             activeHelpKey: openFileBrowser
  1173             label: 'Browse'
  1197             label: 'Browse'
  1174             itemValue: doBrowseDirectory
  1198             itemValue: doBrowseDirectory
  1175             translateLabel: true
  1199             translateLabel: true
  1176             isButton: true
  1200             isButton: true
  1177             isVisible: browseVisibleHolder
  1201             isVisible: browsemenuItemVisibleHolder
  1178             labelImage: (ResourceRetriever ToolbarIconLibrary startFileBrowserIcon)
  1202             labelImage: (ResourceRetriever ToolbarIconLibrary startFileBrowserIcon)
  1179           )
  1203           )
  1180          )
  1204          )
  1181         nil
  1205         nil
  1182         nil
  1206         nil
  1379 ! !
  1403 ! !
  1380 
  1404 
  1381 !FileDialog methodsFor:'aspects'!
  1405 !FileDialog methodsFor:'aspects'!
  1382 
  1406 
  1383 appendButtonVisibleHolder
  1407 appendButtonVisibleHolder
       
  1408     "if set, an additional 'append' button is shown
       
  1409      (to let user append to a file, instead of overwriting the file)"
       
  1410 
  1384     appendButtonVisibleHolder isNil ifTrue:[
  1411     appendButtonVisibleHolder isNil ifTrue:[
  1385         appendButtonVisibleHolder := false asValue.
  1412         appendButtonVisibleHolder := false asValue.
  1386     ].
  1413     ].
  1387     ^ appendButtonVisibleHolder
  1414     ^ appendButtonVisibleHolder
  1388 !
  1415 !
  1403         ]
  1430         ]
  1404     ].
  1431     ].
  1405     ^ nil
  1432     ^ nil
  1406 !
  1433 !
  1407 
  1434 
  1408 browseVisibleHolder
  1435 browseMenuItemVisible:aBoolean
       
  1436     "controls if an 'open filebrowser' menu item is to be shown in the toolbar"
       
  1437 
       
  1438     self browseMenuItemVisibleHolder value:aBoolean
       
  1439 !
       
  1440 
       
  1441 browseMenuItemVisibleHolder
       
  1442     "controls if an 'open filebrowser' menu item is to be shown in the toolbar"
       
  1443 
  1409     browseVisibleHolder isNil ifTrue:[
  1444     browseVisibleHolder isNil ifTrue:[
  1410         browseVisibleHolder := true "false" asValue.
  1445         browseVisibleHolder := true "false" asValue.
  1411     ].
  1446     ].
  1412     ^ browseVisibleHolder.
  1447     ^ browseVisibleHolder.
       
  1448 !
       
  1449 
       
  1450 browseVisibleHolder
       
  1451     "controls if an 'open filebrowser' menu item is to be shown in the toolbar"
       
  1452 
       
  1453     <resource: #obsolete>
       
  1454     ^ self browseMenuItemVisibleHolder.
  1413 !
  1455 !
  1414 
  1456 
  1415 buttonPanelVisibleHolder
  1457 buttonPanelVisibleHolder
  1416     buttonPanelVisibleHolder isNil ifTrue:[
  1458     buttonPanelVisibleHolder isNil ifTrue:[
  1417         buttonPanelVisibleHolder := true asValue.
  1459         buttonPanelVisibleHolder := true asValue.
  1909 "/            newVPanelHeight := verticalPanelView preferredHeight374
  1951 "/            newVPanelHeight := verticalPanelView preferredHeight374
  1910 "/            aBuilder window height: aBuilder window height + sumH.
  1952 "/            aBuilder window height: aBuilder window height + sumH.
  1911 "/        ].
  1953 "/        ].
  1912     ].
  1954     ].
  1913 
  1955 
       
  1956     treeBrowser currentFileNameHolder value:(Array with:self startFilename).
       
  1957 
  1914     "Created: / 03-06-2013 / 18:19:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1958     "Created: / 03-06-2013 / 18:19:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1915 !
  1959 !
  1916 
  1960 
  1917 rememberExtent
  1961 rememberExtent
  1918     self class lastExtent:self window topView extent.
  1962     self class lastExtent:self window topView extent.
  2073 ! !
  2117 ! !
  2074 
  2118 
  2075 !FileDialog class methodsFor:'documentation'!
  2119 !FileDialog class methodsFor:'documentation'!
  2076 
  2120 
  2077 version
  2121 version
  2078     ^ '$Header: /cvs/stx/stx/libtool/FileDialog.st,v 1.130 2013-07-24 21:01:27 cg Exp $'
  2122     ^ '$Header: /cvs/stx/stx/libtool/FileDialog.st,v 1.134 2015-02-27 15:30:48 cg Exp $'
  2079 !
  2123 !
  2080 
  2124 
  2081 version_CVS
  2125 version_CVS
  2082     ^ '$Header: /cvs/stx/stx/libtool/FileDialog.st,v 1.130 2013-07-24 21:01:27 cg Exp $'
  2126     ^ '$Header: /cvs/stx/stx/libtool/FileDialog.st,v 1.134 2015-02-27 15:30:48 cg Exp $'
  2083 !
  2127 !
  2084 
  2128 
  2085 version_HG
  2129 version_HG
  2086 
  2130 
  2087     ^ '$Changeset: <not expanded> $'
  2131     ^ '$Changeset: <not expanded> $'
  2088 !
  2132 !
  2089 
  2133 
  2090 version_SVN
  2134 version_SVN
  2091     ^ '$Id: FileDialog.st,v 1.130 2013-07-24 21:01:27 cg Exp $'
  2135     ^ '$Id: FileDialog.st,v 1.134 2015-02-27 15:30:48 cg Exp $'
  2092 ! !
  2136 ! !
  2093 
  2137