|
Post by RepeatUntil on Jan 25, 2004 19:45:31 GMT
Hi, The file requester plugin had a strange feature which was a problem for some users of Cod2Doc. I have now corrected this small bug and you will find the code below. Description of this bug: suppose that you are first in a directory with a lot of files/folders. If you want to open a directory which is at the end of the list, you have to put the slide bar on the side at the bottom of the list. But if the new directory (with or without space in it) you just entered has less files than the previous one, you see nothing in this directory at the first sight. The reason is that the position of the slide bar didn't change with respect to previous directory (although it's correct graphically). To correct this, you just go up with the slide bar, and you see all your files + drives!! The code is in TWO next posts (because of the 10000 character limit! )
|
|
|
Post by RepeatUntil on Jan 25, 2004 19:47:25 GMT
;------------------------------------------- ;XLNT II - File Requestor ;v1.0 ;------------------------------------------- ; ; yappy ; stew@xlnt.co.uk ; http://www.xlnt.co.uk/ ; ;------------------------------------------- ; ; File$=IO_FileRequest$(Win_Title$,[File Type List],[X],[Y]) ; ;-------------------------------------------
Type io_FILE Field TYP$ Field PATH$ Field FIL$ End Type
Type io_DIR Field PATH$ Field FIL$ Field PAR$ End Type
Function io_FILEREQUEST$(XL_TITLE$,XL_FILE$=".txt|.bb|.bmp|.png|.jpg|All Images|All Files|",XL_X=-1,XL_Y=-1) XL_OLDDIR$=CurrentDir$() XL_DIR$=CurrentDir$()
XL_FILWIN=GUI_WINDOW(XL_X,XL_Y,220,385,XL_TITLE$,"io_TEXT",%10110,2) XL_FILE_LIST=GUI_LIST() XL_TYPE_LIST=GUI_LIST() XL_NUMTYPES=GUI_TXTITEMS(XL_FILE$) For XL_T=0 To XL_NUMTYPES-1 XL_TEXT$=GUI_PARSE$(XL_FILE$,XL_T) Select Upper$(XL_TEXT$) Case ".BMP",".PNG",".JPG" XL_ICON$="io_IMAGE" Case ".TXT" XL_ICON$="io_TEXT" Case ".BB" XL_ICON$="io_BLITZ" Default XL_ICON$="io_FILE" End Select GUI_LIST_ADDITM(XL_TYPE_LIST,XL_TEXT$,0) Next GUI_LABEL(XL_FILWIN,4,219,52,20,"File Name:") GUI_LABEL(XL_FILWIN,4,239,50,20,"File Type:",2) GUI_LABEL(XL_FILWIN,4,259,50,20,"File Size:",2) XL_FILE_SIZE=GUI_LABEL(XL_FILWIN,56,259,158,20,"0 Kb") XL_FIL_LIST=GUI_TXTLIST(XL_FILWIN,4,42,200,180,XL_FILE_LIST) XL_FIL_DRIVE=GUI_IMGBUTTON(XL_FILWIN,4,24,"io_DRIVE",0) XL_FIL_PARENT=GUI_IMGBUTTON(XL_FILWIN,24,24,"io_PARENT",0) XL_FIL_NAME=GUI_INPUT(XL_FILWIN,56,218,158) XL_FIL_TYP=GUI_SELECTOR(XL_FILWIN,56,237,158,XL_TYPE_LIST,4) XL_PIC_BOX=GUI_IMGBOX(XL_FILWIN,4,279,100,100,0,True) XL_PREVIEW=GUI_TICK(XL_FILWIN,106,279,"Preview Active",True) XL_OK=GUI_BUTTON(XL_FILWIN,110,360,52,"Ok") XL_CANCEL=GUI_BUTTON(XL_FILWIN,164,360,52,"Cancel") GUI_TOOLTIP(XL_FIL_DRIVE,"Drive List") GUI_TOOLTIP(XL_FIL_PARENT,"Parent Directory") ;READ IN FILES AND DIRECTORIES io_READ_DIR(XL_DIR$) io_MAKE_LIST(XL_FIL_LIST,Upper$(GUI_GADTEXT$(XL_FIL_TYP))) GUI_OPENWIN(XL_FILWIN) While XL_DONE=False SetBuffer BackBuffer():ClsColor 0,0,GUI_CLSCOLOR:Cls:ClsColor 0,0,0 GUI() ;SORT OUT TOOLTIPS WHEN MOUSE IS OVER LIST XL_OVER=EV_LIST_OVER(XL_FILE_LIST) If XL_OVER XL_TYP$=GUI_ITEM_GETTEXT$(XL_OVER) Select XL_TYP$ Case "DRIVE" XL_FOLD.io_DIR=Object.io_DIR(GUI_ITEM_GETVAL(XL_OVER)) XL_HELP$="Drive List......." Case "PAR" XL_FOLD.io_DIR=Object.io_DIR(GUI_ITEM_GETVAL(XL_OVER)) XL_HELP$="Parent - "+XL_FOLD\PAR$ Case "DIR" XL_FOLD.io_DIR=Object.io_DIR(GUI_ITEM_GETVAL(XL_OVER)) XL_HELP$=XL_FOLD\PATH$+XL_FOLD\FIL$+"\" Default XL_FIL.io_FILE=Object.io_FILE(GUI_ITEM_GETVAL(XL_OVER)) XL_HELP$=XL_FIL\PATH$+XL_FIL\FIL$ End Select GUI_TOOLTIP(XL_FIL_LIST,XL_HELP$) EndIf ;SORT OUR ITEM SELECTION XL_CURITM=EV_LIST_SELECT(XL_FILE_LIST) If XL_CURITM>0 XL_TP$=GUI_ITEM_GETTEXT$(XL_CURITM) Select XL_TP$ Case "IMAGE" XL_SEL_FILE.io_FILE=Object.io_FILE(GUI_ITEM_GETVAL(XL_CURITM)) GUI_SETTEXT(XL_FIL_NAME,XL_SEL_FILE\FIL$) XL_SIZE=FileSize(XL_SEL_FILE\PATH$+XL_SEL_FILE\FIL$)/1024 GUI_SETTEXT(XL_FILE_SIZE,XL_SIZE+" Kb") If GUI_GADON(XL_PREVIEW) GUI_SETVAL(XL_PIC_BOX,LoadImage(XL_SEL_FILE\PATH$+XL_SEL_FILE\FIL$)) EndIf Case "FILE" XL_SEL_FILE.io_FILE=Object.io_FILE(GUI_ITEM_GETVAL(XL_CURITM)) GUI_SETTEXT(XL_FIL_NAME,XL_SEL_FILE\FIL$) XL_SIZE=FileSize(XL_SEL_FILE\PATH$+XL_SEL_FILE\FIL$)/1024 GUI_SETTEXT(XL_FILE_SIZE,XL_SIZE+" Kb") GUI_SETVAL(XL_PIC_BOX,0) Case "TEXT" XL_SEL_FILE.io_FILE=Object.io_FILE(GUI_ITEM_GETVAL(XL_CURITM)) GUI_SETTEXT(XL_FIL_NAME,XL_SEL_FILE\FIL$) XL_SIZE=FileSize(XL_SEL_FILE\PATH$+XL_SEL_FILE\FIL$)/1024 GUI_SETTEXT(XL_FILE_SIZE,XL_SIZE+" Kb") GUI_SETVAL(XL_PIC_BOX,0) Case "BLITZ" XL_SEL_FILE.io_FILE=Object.io_FILE(GUI_ITEM_GETVAL(XL_CURITM)) GUI_SETTEXT(XL_FIL_NAME,XL_SEL_FILE\FIL$) XL_SIZE=FileSize(XL_SEL_FILE\PATH$+XL_SEL_FILE\FIL$)/1024 GUI_SETTEXT(XL_FILE_SIZE,XL_SIZE+" Kb") GUI_SETVAL(XL_PIC_BOX,0) Case "DIR","DRIVE","PAR" GUI_SETTEXT(XL_FILE_SIZE,"0 Kb") GUI_SETTEXT(XL_FIL_NAME,"") XL_SEL_FILE.io_FILE=Null GUI_SETVAL(XL_PIC_BOX,0) End Select EndIf XL_CLICK=EV_LIST_DBLCLICK(XL_FILE_LIST) If XL_CLICK>0 XL_TP$=GUI_ITEM_GETTEXT$(XL_CLICK) Select XL_TP$ Case "DIR" XL_SEL_FILE.io_FILE=Null GUI_SETTEXT(XL_FIL_NAME,"") XL_FOLD.io_DIR=Object.io_DIR(GUI_ITEM_GETVAL(XL_CLICK)) XL_PAR$=XL_FOLD\PATH$+XL_FOLD\FIL$+"\" XL_DIR$=XL_PAR$ io_READ_DIR(XL_PAR$) io_MAKE_LIST(XL_FIL_LIST,Upper$(GUI_GADTEXT$(XL_FIL_TYP))) GUI_REFRESH(XL_FILWIN) GUI_SETVAL(XL_PIC_BOX,0) Case "PAR" XL_SEL_FILE.io_FILE=Null GUI_SETTEXT(XL_FIL_NAME,"") XL_FOLD.io_DIR=Object.io_DIR(GUI_ITEM_GETVAL(XL_CLICK)) XL_DIR$=XL_FOLD\PAR$ io_READ_DIR(XL_FOLD\PAR$) io_MAKE_LIST(XL_FIL_LIST,Upper$(GUI_GADTEXT$(XL_FIL_TYP))) GUI_REFRESH(XL_FILWIN) GUI_SETVAL(XL_PIC_BOX,0) Case "DRIVE" XL_SEL_FILE.io_FILE=Null GUI_SETTEXT(XL_FIL_NAME,"") GUI_SETVAL(XL_PIC_BOX,0) io_DRIVE_LIST() io_MAKE_LIST(XL_FIL_LIST,Upper$(GUI_GADTEXT$(XL_FIL_TYP))) GUI_REFRESH(XL_FILWIN) Default XL_DONE=True End Select EndIf If EV_WIN_CLOSE(XL_FILWIN) XL_DONE=True XL_SEL_FILE.io_FILE=Null GUI_SETTEXT(XL_FIL_NAME,"") EndIf If EV_GAD_RELEASE(XL_FIL_DRIVE) XL_SEL_FILE.io_FILE=Null GUI_SETVAL(XL_PIC_BOX,0) GUI_SETTEXT(XL_FIL_NAME,"") io_DRIVE_LIST() io_MAKE_LIST(XL_FIL_LIST,Upper$(GUI_GADTEXT$(XL_FIL_TYP))) GUI_REFRESH(XL_FILWIN) EndIf If EV_GAD_RELEASE(XL_FIL_PARENT) XL_FOLD.io_DIR=First io_DIR If XL_FOLD<>Null If XL_FOLD\PAR$<>"" XL_SEL_FILE.io_FILE=Null GUI_SETVAL(XL_PIC_BOX,0) GUI_SETTEXT(XL_FIL_NAME,"") io_READ_DIR(XL_FOLD\PAR$) io_MAKE_LIST(XL_FIL_LIST,Upper$(GUI_GADTEXT$(XL_FIL_TYP))) GUI_REFRESH(XL_FILWIN) EndIf EndIf EndIf
If EV_SELECTOR(XL_FIL_TYP) XL_SEL_FILE.io_FILE=Null io_READ_DIR(XL_DIR$) io_MAKE_LIST(XL_FIL_LIST,Upper$(GUI_GADTEXT$(XL_FIL_TYP))) GUI_REFRESH(XL_FILWIN) GUI_SETVAL(XL_PIC_BOX,0) GUI_SETTEXT(XL_FIL_NAME,"") EndIf If EV_GAD_RELEASE(XL_OK) XL_DONE=True EndIf If EV_GAD_RELEASE(XL_CANCEL) XL_DONE=True XL_SEL_FILE.io_FILE=Null EndIf Flip Wend ChangeDir XL_OLDDIR$ If XL_SEL_FILE<>Null RET$=XL_SEL_FILE\PATH$+GUI_GADTEXT$(XL_FIL_NAME) DebugLog RET$ EndIf Delete Each io_DIR Delete Each io_FILE GUI_FREEWIN(XL_FILWIN) Return RET$ End Function
Function io_MAKE_LIST(XL_LST,XL_FILETYPE$) GADLIST.GAD=Object.GAD(XL_LST) XL_LIST.LIST=GADLIST\LIST XL_LIST_HANDLE=Handle(XL_LIST)
;CLEAR THE LIST FIRST GUI_LIST_CLEAR(XL_LIST\OBJ) ;ADD FOLDERS TO LIST FIRST For XL_FOLD.io_DIR=Each io_DIR Select XL_FOLD\FIL$ Case "." XL_TEXT$="Drives" XL_ICON$="io_DRIVE" XL_DATA$="DRIVE" Case ".." XL_TEXT$="Parent" XL_ICON$="io_PARENT" XL_DATA$="PAR" Case "DRIVE" XL_TEXT$=XL_FOLD\PATH$ XL_ICON$="io_DRIVE" XL_DATA$="DIR" XL_FOLD\FIL$=XL_FOLD\PATH$ XL_FOLD\PATH$="" Default XL_TEXT$=XL_FOLD\FIL$ XL_ICON$="io_FOLDER" XL_DATA$="DIR" End Select GUI_LIST_ADDITM(XL_LIST_HANDLE,XL_TEXT$,0,XL_ICON$,True,Handle(XL_FOLD),XL_DATA$,False) Next ;SORT OUT FILES - CHECK TYPE AGAINST TYPE LIST For XL_FILE.io_FILE=Each io_FILE Select XL_FILE\TYP$ Case ".BMP",".PNG",".JPG" XL_ICON$="io_IMAGE" XL_TP$="IMAGE" Case ".TXT" XL_ICON$="io_TEXT" XL_TP$="TEXT" Case ".BB" XL_ICON$="io_BLITZ" XL_TP$="BLITZ" Default XL_ICON$="io_FILE" XL_TP$="FILE" End Select If XL_FILE\TYP$=XL_FILETYPE$ Or XL_FILETYPE$="ALL FILES" GUI_LIST_ADDITM(XL_LIST_HANDLE,XL_FILE\FIL$,0,XL_ICON$,True,Handle(XL_FILE),XL_TP$,False) Else If XL_FILETYPE$="ALL IMAGES" And XL_TP$="IMAGE" GUI_LIST_ADDITM(XL_LIST_HANDLE,XL_FILE\FIL$,0,XL_ICON$,True,Handle(XL_FILE),XL_TP$,False) EndIf EndIf Next ; Important in order to go at the first line of the scroller GADLIST\LINK[0]\FVAL= GADLIST\FMIN GADLIST\LINK[0]\VAL=GADLIST\MIN
GUI_LIST_REFRESH(XL_LIST_HANDLE) End Function
#nosmileys
|
|
|
Post by RepeatUntil on Jan 25, 2004 19:51:35 GMT
Rest of the code!!
Function io_DRIVE_LIST() Delete Each io_FILE Delete Each io_DIR XL_OLD$=CurrentDir$() ChangeDir SystemProperty ("appdir")
For XL_T=Asc("A") To Asc("Z") XL_DIR$=CurrentDir$() ChangeDir Chr$(XL_T)+":\" If CurrentDir$()<>XL_DIR$ XL_DISK.io_DIR=New io_DIR XL_DISK\FIL$="DRIVE" XL_DISK\PATH$=Chr$(XL_T)+":" EndIf Next ChangeDir XL_OLD$ End Function
Function io_READ_DIR(XL_DIR$) Delete Each io_FILE Delete Each io_DIR ChangeDir XL_DIR$ XL_DIRECTORY=ReadDir(XL_DIR$) If XL_DIRECTORY Repeat XL_FIL$=NextFile$(XL_DIRECTORY) If XL_FIL="" XL_DONE=True Else XL_TYP=FileType(XL_FIL$) XL_FIL$=Trim$(XL_FIL$) Select XL_TYP Case 1 XL_FILE.io_FILE=New io_FILE XL_FILE\PATH$=XL_DIR$ XL_FILE\FIL$=XL_FIL$ Case 2 XL_FOLD.io_DIR=New io_DIR XL_FOLD\PATH$=XL_DIr$ XL_FOLD\FIL$=XL_FIL$ XL_FOUND=False XL_TT=Len(XL_FOLD\PATH$)-1 If XL_TT>3 While XL_FOUND=False And XL_TT>3 If Mid$(XL_FOLD\PATH$,XL_TT,1)="\" XL_FOUND=True Else XL_TT=XL_TT-1 EndIf Wend XL_FOLD\PAR$=Mid$(XL_FOLD\PATH$,1,XL_TT) EndIf End Select EndIf Until XL_DONE=True CloseDir XL_DIRECTORY XL_FILE.io_FILE=First io_FILE If XL_FILE<>Null XL_NXT.io_FILE=After XL_FILE While XL_NXT<>Null If Lower$(XL_NXT\FIL$)<Lower$(XL_FILE\FIL$) Insert XL_NXT Before XL_FILE XL_FILE.io_FILE=First io_FILE XL_NXT.io_FILE=After XL_FILE Else XL_NXT=After XL_NXT XL_FILE=After XL_FILE EndIf Wend EndIf XL_FOLD.io_DIR=First io_DIR XL_NXTD.io_DIR=After XL_FOLD While XL_NXTD<>Null If Lower$(XL_NXTD\FIL$)<Lower$(XL_FOLD\FIL$) Insert XL_NXTD Before XL_FOLD XL_FOLD.io_DIR=First io_DIR XL_NXTD.io_DIR=After XL_FOLD Else XL_NXTD=After XL_NXTD XL_FOLD=After XL_FOLD EndIf Wend For XL_FILE.io_FILE=Each io_FILE XL_START=Instr(XL_FILE\FIL$,".") XL_TY$="" If XL_START XL_TY$=Upper$(Mid$(XL_FILE\FIL$,XL_START)) EndIf XL_FILE\TYP$=XL_TY$ Next EndIf End Function
|
|