//--- OBJECT WRITE BEGIN --- new GuiControl(SaveFileDlg) { profile = "GuiDialogProfile"; horizSizing = "right"; vertSizing = "bottom"; position = "0 0"; extent = "640 480"; minExtent = "8 8"; visible = "1"; helpTag = "0"; new GuiWindowCtrl() { profile = "GuiWindowProfile"; horizSizing = "center"; vertSizing = "center"; position = "131 77"; extent = "378 326"; minExtent = "8 8"; visible = "1"; helpTag = "0"; text = "Save File..."; maxLength = "255"; resizeWidth = "1"; resizeHeight = "1"; canMove = "1"; canClose = "1"; canMinimize = "1"; canMaximize = "1"; minSize = "50 50"; closeCommand = "Canvas.popDialog(SaveFileDlg);"; new GuiPopUpMenuCtrl(SA_directoryList) { profile = "GuiPopUpMenuProfile"; horizSizing = "right"; vertSizing = "bottom"; position = "68 23"; extent = "226 19"; minExtent = "8 8"; visible = "1"; helpTag = "0"; maxLength = "255"; maxPopupHeight = "200"; }; new GuiScrollCtrl() { profile = "GuiScrollProfile"; horizSizing = "right"; vertSizing = "bottom"; position = "9 46"; extent = "285 248"; minExtent = "8 8"; visible = "1"; helpTag = "0"; willFirstRespond = "1"; hScrollBar = "dynamic"; vScrollBar = "alwaysOn"; constantThumbHeight = "0"; defaultLineHeight = "15"; childMargin = "0 0"; new GuiTextListCtrl(SA_fileList) { profile = "GuiTextArrayProfile"; horizSizing = "right"; vertSizing = "bottom"; position = "0 0"; extent = "267 144"; minExtent = "8 8"; visible = "1"; altCommand = "doSACallback();"; helpTag = "0"; enumerate = "0"; resizeCell = "1"; columns = "0"; fitParentWidth = "1"; clipColumnText = "0"; noDuplicates = "false"; }; }; new GuiButtonCtrl() { profile = "GuiButtonProfile"; horizSizing = "right"; vertSizing = "bottom"; position = "303 268"; extent = "60 20"; minExtent = "8 8"; visible = "1"; command = "doSACallback();"; helpTag = "0"; text = "Save"; }; new GuiButtonCtrl() { profile = "GuiButtonProfile"; horizSizing = "right"; vertSizing = "bottom"; position = "303 294"; extent = "60 20"; minExtent = "8 8"; visible = "1"; command = "Canvas.popDialog(SaveFileDlg);"; helpTag = "0"; text = "Cancel"; }; new GuiTextEditCtrl(SA_nameEdit) { profile = "GuiTextEditProfile"; horizSizing = "right"; vertSizing = "bottom"; position = "8 299"; extent = "286 16"; minExtent = "8 8"; visible = "1"; helpTag = "0"; maxLength = "255"; historySize = "0"; password = "0"; tabComplete = "0"; }; new GuiTextCtrl() { profile = "GuiTextProfile"; horizSizing = "right"; vertSizing = "bottom"; position = "10 21"; extent = "55 20"; minExtent = "8 8"; visible = "1"; helpTag = "0"; text = "Directory"; maxLength = "255"; }; }; }; //--- OBJECT WRITE END --- //------------------------------------------------------------------------------ // ex: getSaveFilename("~/stuff/*.*", saveStuff); // -- calls 'saveStuff(%filename)' on dblclick or ok //------------------------------------------------------------------------------ function getSaveFilename(%filespec, %callback, %currentFile) { $SA_callback = %callback; $SA_filespec = %filespec; %hasPath = (filePath(%currentFile) $= "") ? false : true; Canvas.pushDialog(SaveFileDlg, 99); // Fill the Directory Drop Down %i = 0; %unique = 0; SA_directoryList.clear(); for(%file = findFirstFile("*"); %file !$= ""; %file = findNextFile("*")) if (strstr(%file, "/CVS/") == -1) { %path = filePath(%file); if (!%unique[%path]) { %i++; %unique[%path] = %i; SA_directoryList.add(%path, %i); if (!%hasPath) { if (isFile(%path @ "/" @ %currentFile)) { %currentFile = %path @ "/" @ %currentFile; %hasPath = true; } } } } SA_directoryList.sort(); // select the directory represented by current file if ( %unique[filePath(%currentFile)] ) SA_directoryList.setSelected( %unique[filePath(%currentFile)] ); else SA_directoryList.setSelected( 1 ); SA_nameEdit.setValue(fileName(%currentFile)); } //-------------------------------------- function doSACallback() { if (SA_nameEdit.getValue() !$= "" && SA_directoryList.getValue() !$= "") { %file = SA_directoryList.getValue() @ "/" @ SA_nameEdit.getValue(); eval( $SA_callback @ "(\"" @ %file @"\");" ); } Canvas.popDialog(SaveFileDlg); } //-------------------------------------- function SA_directoryList::onSelect(%this, %id) { // when a directory is selected put it's files in the file list SA_fileList.clear(); %filespec = %this.getTextById(%id) @ "/" @ $SA_filespec; for(%file = findFirstFile(%filespec); %file !$= ""; %file = findNextFile(%filespec)) if (strStr(%file, "/CVS/") == -1) SA_fileList.addRow(%i++, fileName(%file)); SA_fileList.sort(0); } //-------------------------------------- function SA_filelist::onSelect(%this, %id) { // when a file is selected change the current filename SA_nameEdit.setValue(%this.getRowTextById(%id)); }