;; | ---------------------------------------------------------------------------- ;; | DL_GetFileM ;; | ---------------------------------------------------------------------------- ;; | Function : Browse through a folder and select multiple files ;; | Equaivalent to the (dos_getfilem..) function from doslib ;; | Arguments : ;; | 'TitleMsg' - Dialog Box ttitle message ;; | 'Folder' - Initial folder to look in ;; | 'Ext' - File Extension to look for ;; | 'SelFileLst' - Selected files list ;; | Updated : October 6, 2008 ;; | Copyrights : (C) 2008, Four Dimension Technologies, Bangalore, India ;; | Author : rakesh.rao@4d-technologies.com ;; | Web : www.4d-technologies.com ;; | ---------------------------------------------------------------------------- (defun DL_GetFileM ( TitleMsg Folder Ext SelFileLst / retVal ) (setq #Folder Folder #Ext Ext #SelFileLst SelFileLst ) (if (not (new_dialog "getfilem_dlg" #dcl_id)) (exit) ) (set_tile "dlg_title" TitleMsg) (set_tile "folder_name" #Folder) (setq #FileLst (vl-directory-files #Folder (strcat "*." #Ext))) (DL_FillLst #FileLst "available_files") (DL_FillLst #SelFileLst "selected_files") (action_tile "browse" "(Disp_GetFileM)") (action_tile "add" "(Disp_GetFileM)") (action_tile "remove" "(Disp_GetFileM)") (action_tile "accept" "(done_dialog 100)") (action_tile "cancel" "(done_dialog 99)") (setq retVal (start_dialog)) (if #SelFileLst (setq #SelFileLst (cons #Folder #SelFileLst)) ) (setq #Folder nil #Ext nil ) (if (= retVal 100) #SelFileLst nil) ) (defun Disp_GetFileM ( / tmp itm Lst FileLst Ext _Ext ) (cond ((= $key "add") (setq tmp (get_tile "available_files")) (if (/= tmp "") (progn (setq tmp (mapcar 'atoi (ST_Str2Lst tmp " "))) (foreach itm tmp (setq itm (nth itm #FileLst)) (if (not (member itm #SelFileLst)) (setq #SelFileLst (append #SelFileLst (list itm))) (alert (strcat itm " is already selected and will not be added.")) ) ) (DL_FillLst #SelFileLst "selected_files") )) ) ((= $key "remove") (setq tmp (get_tile "selected_files")) (if (/= tmp "") (progn (setq tmp (mapcar 'atoi (ST_Str2Lst tmp " ")) Lst '() ) (foreach itm tmp (setq itm (nth itm #SelFileLst) Lst (cons itm Lst) ) ) (setq Lst (reverse Lst)) (foreach itm Lst (setq #SelFileLst (LI_RemLst itm #SelFileLst)) ) (DL_FillLst #SelFileLst "selected_files") )) ) ((= $key "browse") (setq Ext (ST_Str2Lst #Ext ",") _Ext (nth 0 Ext) #Folder (getfiled "Select folder to browse" (strcat #Folder "$dummy$." _Ext) _Ext 1) ) (if #Folder (progn (setq #Folder (cadr (MI_SplitPath #Folder))) (set_tile "folder_name" #Folder) (setq #FileLst '()) (foreach _Ext Ext (setq Lst (vl-directory-files #Folder (strcat "*." _Ext))) (if Lst (setq #FileLst (append #FileLst Lst)) ) ) (DL_FillLst #FileLst "available_files") )) ) ) )