home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / fdlg.zip / FDLG_S.CLS < prev    next >
Text File  |  1996-02-02  |  9KB  |  332 lines

  1. "  ---- Ronald Brill 1995, 1996 ---- "
  2. "  ---- Extended File Dialogs Version 2.1 ---- "
  3.  
  4.  
  5. FileDialogController SecondaryFile!
  6.  
  7.  
  8. !FileDialogController class methods!
  9.  
  10.  
  11. !"End of FileDialogController class methods block"
  12.  
  13.  
  14. !FileDialogController methods!
  15.  
  16.  
  17. doMoveSelectionFor: aSymbol from: fromIndex to: toIndex
  18. "  ---- Danke ELO ---- "
  19.    aSymbol = #vRememberLiBo
  20.    ifTrue:
  21.    [  " ---- ENFIN Fehler vermeiden ---- "
  22.       fromIndex > (cItemDict at: #vRememberLiBo) getList size
  23.       ifTrue:
  24.       [  fromIndex := (cItemDict at: #vRememberLiBo) getList size.
  25.       ].
  26.       FileDialogSetup load permanentDirectoryMoveFrom: fromIndex to: toIndex.
  27.       self refreshRememberList.
  28.    ].
  29. !"end doMoveSelectionFor:from:to:"
  30.  
  31.  
  32. initFileTypeList
  33. | setup |
  34.    setup := FileDialogSetup load.
  35.    vFileTypes putValues: setup filterValues;
  36.          putLabels: setup filterLabels.
  37.    wildcard asString = '*.cls'
  38.    ifTrue:
  39.    [  wildcard := setup filterMapping asString
  40.    ].
  41.    vFileTypes setSelectionTo: wildcard.
  42. !"end initFileTypeList"
  43.  
  44.  
  45. mDeleteDefault
  46.    FileDialogSetup load permanentDefaultDirectory: String new.
  47.    self refreshRememberList.
  48. !"end mDeleteDefault"
  49.  
  50.  
  51. mFileSelected
  52.     vFileName put: vFileList getValue.
  53.     self preview: nil.
  54. !"end mFileSelected"
  55.  
  56.  
  57. mPreview
  58.    (cItemDict at: #vPreview) put: (cItemDict at: #vPreview) getValue not.
  59. !"end mPreview"
  60.  
  61.  
  62. mRememberAdd
  63. | currentDir |
  64.    currentDir := (FileNameString newDriveName: drive dirName: directory baseName: nil) asString.
  65.    FileDialogSetup load permanentDirectoryListAdd: currentDir.
  66.    self refreshRememberList.
  67. !"end mRememberAdd"
  68.  
  69.  
  70. mRememberDelete
  71. | selection |
  72.    selection := (cItemDict at: #vRememberLiBo) getSelection.
  73.    selection == 0 ifTrue: [ ^ self ].
  74.    FileDialogSetup load permanentDirectoryListRemoveAt: selection.
  75.    self refreshRememberList.
  76. !"end mRememberDelete"
  77.  
  78.  
  79. mRememberMenu
  80.    (cItemDict at: #vRememberMenu) getValue sendTo: self args: nil.
  81. !"end mRememberMenu"
  82.  
  83.  
  84. mRememberSelected
  85. | value |
  86.    value := (cItemDict at: #vRememberLiBo) getValue deepCopy.
  87.    value == nil ifTrue: [ ^ self ].
  88.    value := FileNameString newString: (value add: DirSeparator).
  89.  
  90.    self walkTo: value.
  91. !"end mRememberSelected"
  92.  
  93.  
  94. mRememberSort
  95.    FileDialogSetup load permanentSortDirectoryList.
  96.    self refreshRememberList.
  97. !"end mRememberSort"
  98.  
  99.  
  100. mSetDefault
  101. | value |
  102.    value := (cItemDict at: #vRememberLiBo) getValue deepCopy.
  103.    value == nil ifTrue: [ ^ self ].
  104.    FileDialogSetup load permanentDefaultDirectory: value.
  105.    self refreshRememberList.
  106. !"end mSetDefault"
  107.  
  108.  
  109. mSetupMenu
  110.    (cItemDict at: #vSetupMenu) getValue sendTo: self args: nil.
  111. !"end mSetupMenu"
  112.  
  113.  
  114. mSetup
  115.    ExtendedFileDialogSetup isNil
  116.    ifTrue:
  117.    [  ExtendedFileDialogSetupController createInstanceName: #ExtendedFileDialogSetup.
  118.    ].
  119.    ExtendedFileDialogSetup open.
  120.    ExtendedFileDialogSetup mainForm setParentTo: self mainForm.
  121. !"end mSettings"
  122.  
  123.  
  124. mShowAbout
  125. | tempText |
  126.    tempText := 'Extended File Dialogs' + CrLf + 'Version 2.0'
  127.                + CrLf + CrLf + 'RBRi 1995'.
  128.    ModalMessageBox   title:      'About'
  129.                      text:       tempText
  130.                      icon:       #Info
  131.                      buttons:    {#OK}
  132.                      action:     nil
  133.                      controller: self.
  134. !"end mShowAbout"
  135.  
  136.  
  137. mToggleFullPath
  138. | item setup |
  139.    item := cItemDict at: #vRememberMenu.
  140.    setup := FileDialogSetup load.
  141.    setup fullPath: setup fullPath not.
  142.    setup fullPath
  143.    ifTrue:
  144.    [  item setInitialLabelsTo: (item getLabels at: 9 put: 'Show reduced path').
  145.    ]
  146.    ifFalse:
  147.    [  item setInitialLabelsTo: (item getLabels at: 9 put: 'Show full path').
  148.    ].
  149.    item initialize.
  150.    self refreshRememberList.
  151. !"end mToggleFullPath"
  152.  
  153.  
  154. mTogglePreview
  155. | dirList |
  156.     dirList := #(vPreviewMLString vAttribChList creationText writeText accessText
  157.                  writeEntryDate accessEntryDate creationEntryDate
  158.                  writeEntryTime accessEntryTime creationEntryTime
  159.                 ).
  160.     (cItemDict at: #vPreview) getValue
  161.     ifTrue:
  162.     [   (cItemDict at: #vRememberLiBo) hide.
  163.         dirList do: [ :each| (cItemDict at: each) show. ].
  164.     ]
  165.     ifFalse:
  166.     [   dirList do: [ :each| (cItemDict at: each) hide. ].
  167.         (cItemDict at: #vRememberLiBo) show.
  168.     ].
  169.     self preview: nil.
  170. !"end mTogglePreview"
  171.  
  172.  
  173. openInitialization
  174. | setup dir |
  175. "  ---- changed by RBRi ---- "
  176.    setup := FileDialogSetup load.
  177.    originalDirectory := FileStream defaultDirectory.
  178.    originalDrive := FileStream defaultDrive.
  179.    drive == nil
  180.    ifTrue:
  181.    [  dir := setup defaultDirectory.
  182.       dir isBlank
  183.       ifTrue:
  184.       [  drive := originalDrive.
  185.          directory := originalDirectory.
  186.       ]
  187.       ifFalse:
  188.       [  dir last == DirSeparator ifFalse: [ dir := dir + DirSeparator. ].
  189.          dir := FileNameString newString: dir.
  190.          drive := dir driveName.
  191.          directory := dir dirName.
  192.          directory first == DirSeparator ifTrue: [ directory := directory cdr. ].
  193.       ].
  194.    ].
  195. "  ---- end RBRi ---- "
  196.    self ifUnderEditorControl: [ ^ self.].
  197.    self changeDriveTo: drive.
  198.    self changeDirectoryTo: DirSeparator asString + directory.
  199.    FileNameString supportsDrives
  200.    ifFalse:
  201.    [  vDriveList hide.
  202.       (cItemDict at: #cDriveLabel) hide.
  203.    ]
  204.    ifTrue:
  205.    [  self init: #DriveList.
  206.    ].
  207.    self init: #FileTypeList;
  208.          init: #DirName;
  209.          init: #DirList;
  210.          init: #FileList.
  211.    vOk highlightOn.
  212.    fileName == nil
  213.    ifTrue:
  214.    [  fileName := wildcard.
  215.    ].
  216.    vFileName put: fileName.
  217.    help == nil
  218.    ifTrue:
  219.    [  vHelp hide.
  220.    ]
  221.    ifFalse:
  222.    [  vHelp show.
  223.    ].
  224.  
  225. "  ---- added by RBRi ---- "
  226.    setup directoryListExtend: (cItemDict at: #vRememberLiBo) formItem rect width.
  227.    self mTogglePreview.
  228.    self refreshRememberList.
  229.    (cItemDict at: #vPreviewMLString) setFormatTo: setup previewFont.
  230. "  ---- end RBRi ---- "
  231. !"end openInitialization"
  232.  
  233.  
  234. preview: fileName
  235. | file count text flag |
  236.     (cItemDict at: #vPreview) == nil ifTrue: [ ^ self. ].
  237.  
  238.     (cItemDict at: #vPreview) getValue
  239.     ifTrue:
  240.     [   file := self fileOK.
  241.         "  ---- result muß zurückgesetzt werden, damit der 'Cancel'-Button funktioniert ---- "
  242.         result := nil.
  243.         "  ---- das System hat nichts gemerkt, weiter gehts ---- "
  244.         file isString
  245.         ifTrue:
  246.         [   file := FileStream file: file onError: [ file := nil. ].
  247.         ].
  248.         (file isKindOf: Message)
  249.         | file isNil
  250.         ifTrue:
  251.         [   (cItemDict at: #vPreviewMLString) put: String new.
  252.             (cItemDict at: #vAttribChList) setSelectionTo: Array new.
  253.             #(writeEntry accessEntry creationEntry)
  254.             do:
  255.             [   :each |
  256.                (cItemDict at: each + 'Date') put: String new.
  257.                (cItemDict at: each + 'Time') put: String new.
  258.             ].
  259.             ^ self.
  260.         ].
  261.         count := 0.
  262.         text := String new.
  263.         [ file atEnd not & (count < 24) ]
  264.         whileTrue:
  265.         [   count := count + 1.
  266.             text := text + file nextString + CrLf.
  267.         ].
  268.         (cItemDict at: #vPreviewMLString) put: text.
  269.  
  270. "       ---- Dateiattribute ---- "
  271.         file := file fileName.
  272.         flag := File privateAttributesOf: file.
  273.  
  274.         flag := #(fattrReadonly fattrHidden fattrSystem fattrArchiv)
  275.                 select:
  276.                 [   :eachFlag |
  277.                     (flag bitAnd: (FileAccessConstants at: eachFlag)) == (FileAccessConstants at: eachFlag)
  278.                 ].
  279.         flag := flag collect: [ :each |  #(fattrReadonly fattrHidden fattrSystem fattrArchiv) indexOf: each ].
  280.         (cItemDict at: #vAttribChList) setSelectionTo: flag.
  281.  
  282.         #(modify access create)
  283.         with:
  284.         #(writeEntry accessEntry creationEntry)
  285.         do:
  286.         [   :eachFlag :eachEntry |
  287.             flag := File privateAccessTimeOf: file type: eachFlag.
  288.             (cItemDict at: eachEntry + 'Date') put: (flag at: 1) asDate asFullISOString.
  289.             (cItemDict at: eachEntry + 'Time') put: (flag at: 2) asTime asISOString.
  290.         ].
  291.     ].
  292. !"end preview:"
  293.  
  294.  
  295. refreshRememberList
  296. | item setup |
  297.    item := cItemDict at: #vRememberLiBo.
  298.    setup := FileDialogSetup load.
  299.    item putLabels: setup directoryListLabels.
  300.    item putValues: setup directoryList.
  301. !"end showInRememberList:"
  302.  
  303.  
  304. setupChanged
  305. | setup |
  306.    setup := FileDialogSetup load.
  307.    (cItemDict at: #vPreviewMLString) setFormatTo: setup previewFont.
  308.    wildcard := setup filterMapping asString.
  309.    self init: #FileTypeList.
  310.    self mFileTypeSelected.
  311. !"end setupChanged"
  312.  
  313.  
  314. walkTo: aFileNameString
  315.     self changeDriveTo: aFileNameString driveName.
  316.     self changeDirectoryTo: aFileNameString dirName.
  317.     FileNameString supportsDrives
  318.     ifFalse:
  319.     [   vDriveList hide.
  320.         (cItemDict at: #cDriveLabel) hide.
  321.     ]
  322.     ifTrue:
  323.     [   self init: #DriveList.
  324.     ].
  325.     self init: #DirName;
  326.          init: #DirList;
  327.          init: #FileList.
  328. !"end walkTo:"
  329.  
  330.  
  331. !"End of FileDialogController methods block"
  332.