Ooops
November 28, 2020, 10:48:00 AM

Author Topic: [bb] FILE SELECTOR (save/load) for BlitzUI by mrtricks [ 1+ years ago ]  (Read 556 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
Title : FILE SELECTOR (save/load) for BlitzUI
Author : mrtricks
Posted : 1+ years ago

Description : Instructions are at the top of the code in Rems: Just Include this file as "save_gui.bb" and with a few inserted lines in Chris Fuller's BlitzUI code, you have a full-featured file selector much like those in other Windows apps. More advanced than that which comes with BlitzUI.

(I've used a couple of icons from the icons.bb file included with BlitzUI... And made a couple new for the "Go up one folder" button and the "New Folder" button.)


Code :
Code: BlitzBasic
  1. ;---------------------------------;
  2. ;---FILE SELECTOR by Robin King---;
  3. ;-----------19 Jun 2003-----------;
  4. ;---for BlitzUI by Chris Fuller---;
  5. ;---------------------------------;
  6.  
  7. ;INSTRUCTIONS: (Hope this isn't too confusing!)
  8. ;
  9. ; Save this as "save_gui.bb"
  10. ;
  11. ; In your main program, after the line:
  12. ;
  13. ;
  14. ;
  15. ;--------------------------------------------------------
  16. ;;;;            Initialise(  )
  17. ;--------------------------------------------------------
  18. ;
  19. ;
  20. ;
  21. ; ...type the Line:
  22. ;
  23. ;
  24. ;
  25. ;--------------------------------------------------------
  26. ;;;;            Include "save_gui.bb"
  27. ;--------------------------------------------------------
  28. ;
  29. ;
  30. ;
  31. ; Next, in the GUI code, after the section:
  32. ;
  33. ;
  34. ;
  35. ;--------------------------------------------------------
  36. ;;;;            ;Event Handling
  37. ;;;;            Select appEvent
  38. ;;;;                    Case EVENT_WINDOW
  39. ;;;;                            Select appWindowEvent
  40. ;;;;
  41. ;;;;                                    - ALL YOUR WINDOW EVENTS
  42. ;;;;
  43. ;;;;                            End Select
  44. ;;;;                    Case EVENT_MENU
  45. ;;;;                            Select appMenuEvent
  46. ;;;;
  47. ;;;;                                    - ALL YOUR MENU EVENTS
  48. ;;;;
  49. ;;;;                            End Select
  50. ;;;;                    Case EVENT_GADGET
  51. ;;;;                            Select appGadgetEvent
  52. ;;;;
  53. ;;;;                                    - ALL YOUR GADGET EVENTS
  54. ;;;;
  55. ;;;;                            End Select
  56. ;--------------------------------------------------------
  57. ;
  58. ;
  59. ;
  60. ; ... type this line:
  61. ;
  62. ;
  63. ;
  64. ;--------------------------------------------------------
  65. ;;;;                    FILE_SELECTOR_GADGETS
  66. ;--------------------------------------------------------
  67. ;                      
  68. ;
  69. ;
  70. ; NB: It's VERY important that it comes before the final:
  71. ;
  72. ;
  73. ;
  74. ;--------------------------------------------------------
  75. ;;;;            End Select
  76. ;--------------------------------------------------------
  77. ;
  78. ;
  79. ; Then, just AFTER that final End Select and before
  80. ; the DrawMouse(  ) Line, Type:
  81. ;
  82. ;
  83. ;
  84. ;--------------------------------------------------------
  85. ;;;;            SAVE_GUI_OTHER_FUNCTIONS
  86. ;--------------------------------------------------------
  87. ;
  88. ;
  89. ;
  90. ; These are functions that need to be called every frame,
  91. ; such as checking for double-click.
  92. ;
  93. ;
  94. ;
  95. ;
  96. ; Then: to start the save dialogue running
  97. ; (at any point in your program), type:
  98. ;
  99. ;
  100. ;
  101. ;--------------------------------------------------------
  102. ;;;;            SAVE_DIALOGUE( "All Files (.*);Image Files (.bmp .jpg .tif)*;Blitz Code (.bb)" , "New File" )
  103. ;--------------------------------------------------------
  104. ;
  105. ;
  106. ;
  107. ; The first parameter is all the extensions you wish to show
  108. ; in the file selector - Put the description (if you want), then IN BRACKETS,
  109. ; the actual extensions separated by a space. The * after the brackets in the Image
  110. ; Files entry in the example above denotes that this filter is the default one.
  111. ; Put "" if you wish not to filter at all.
  112. ;
  113. ; The first extension in a group will be appended to a save name if there is none
  114. ; added by the user. (ie if you type in Image1, it will be called Image1.bmp)
  115. ;
  116. ; And the 2nd parameter is a default Filename you want to save as.
  117. ; (Again, put "" if you want it left blank.)
  118. ;
  119. ;
  120. ;
  121. ; To start the open dialogue running
  122. ; (at any point in your program), type:
  123. ;
  124. ;
  125. ;
  126. ;--------------------------------------------------------
  127. ;;;;            OPEN_DIALOGUE( "All Files (.*);Image Files (.bmp .jpg .tif)*;Blitz Code (.bb)" )
  128. ;--------------------------------------------------------
  129. ;
  130. ;
  131. ;
  132. ; The first parameter is all the extensions you wish to show
  133. ; in the file selector - Put the description (if you want), then IN BRACKETS
  134. ; (only if you've put descriptions),
  135. ; the actual extensions separated by a space. Separate the filter groups with a semi colon (;)
  136. ; The * After the brackets in the Image
  137. ; Files entry in the example above denotes that this filter is the default one.
  138. ; Put "" if you wish not to filter at all.
  139. ;
  140. ;
  141. ;
  142. ;
  143. ;
  144. ;
  145. ;
  146. ;
  147. ;
  148. ; Lastly, you must include functions in your main program:
  149. ; OPEN(f$) and SAVE(f$) - where f$ is the filename -
  150. ; where you do your file saving and opening.
  151. ;
  152.  
  153. ;-------------------------------------------------------------------------------------------
  154. ;-------------------------------------------------------------------------------------------
  155. ;-------------------------------------------------------------------------------------------
  156. ;-------------------------------------------------------------------------------------------
  157. ;-------------------------------------------------------------------------------------------
  158. ;-------------------------------------------------------------------------------------------
  159. ;-------------------------------------------------------------------------------------------
  160.  
  161.  
  162.  
  163. ;create images for buttons and file list
  164. Global imgNew, imgOpen, imgNewFolder, imgUpFolder
  165. MAKE_ICONS
  166.  
  167.  
  168.  
  169. ;Main File selector Window
  170.         Global win_sav = Window(100,100,266,316,"Save/Open","0",1,0,0,1)
  171.         Global btn_sav_up = Button(212,8,20,21,"","0",1,0,0)
  172.         sendmessage(btn_sav_up,"BM_SETIMAGE",imgUpFolder)
  173.         Global btn_sav_newfolder = Button(234,8,21,21,"","0",1,0,0)
  174.         sendmessage(btn_sav_newfolder,"BM_SETIMAGE",imgNewFolder)
  175.         Global btn_sav_yes = Button(195,237,60,21,"Save","0",1,0,0)
  176.         Global btn_sav_no = Button(195,262,60,21,"Cancel","0",1,0,0)
  177.         Global lbl_sav_saveas = Label(8,242,"Name:",0)
  178.         Global lst_sav_files = ListBox(8,33,247,200,20,20,10,0)
  179.         Global txt_sav_filename = TextBox(40,237,152,21,0,0,18,10,0)
  180.         Global cbo_sav_foldername = ComboBox(8,8,200,21)       
  181.         Global cbo_sav_filter = ComboBox(8,262,184,21)
  182.  
  183. ;Create new folder Window
  184.         Global win_newfolder = Window(180,150,219,87,"Create New Folder","0",1,0,0,1)
  185.         Global btn_newfolder_yes = Button(148,33,60,21,"Create","0",1,0,0)
  186.         Global btn_newfolder_no = Button(86,33,60,21,"Cancel","0",1,0,0)
  187.         Global txt_newfolder = TextBox(8,8,200,21,0,0,18,10,1)
  188.         SendMessage(txt_newfolder,"TM_SETTEXT",0,"New Folder")
  189.  
  190. ;File already exists. Overwrite? Window
  191.         Global win_overwrite = Window(210,180,204,88,"Warning","0",1,0,0,0)
  192.         Global btn_overwrite_yes = Button(30,34,60,21,"Yes","0",1,0,0)
  193.         Global btn_overwrite_no = Button(110,34,60,21,"No","0",1,0,0)
  194.         l$="That file already exists."+Chr(10)+"Do you wish to overwrite?"
  195.         Global lbl_overwrite = Label(100,4,l$,1)
  196.  
  197. ;Folder already exists window
  198.         Global win_folderalreadyexists = Window(210,180,204,88,"Warning","0",1,0,0,0)
  199.         Global btn_folderalreadyexists_okay = Button(72,34,60,21,"Okay","0",1,0,0)
  200.         l$="That folder already exists."+Chr(10)+"Please choose a different name."
  201.         Global lbl_folderalreadyexists = Label(102,3,l$,1)
  202.  
  203. ;Filename contains illegal characters Window
  204.         Global win_illegalchars = Window(210,180,204,88,"Warning","0",1,0,0,0)
  205.         Global btn_illegalchars_okay = Button(72,34,54,20,"Okay","0",1,0,0)
  206.         l$="The characters  / * "+Chr$(34)+" ? : | < > are"+Chr(10)+"not allowed and have been edited out."
  207.         Global lbl_illegalchars = Label(102,3,l$,1)
  208.  
  209.  
  210.  
  211. ;close all folders
  212. sendmessage(win_sav,"WM_CLOSE")
  213. sendmessage(win_newfolder,"WM_CLOSE")
  214. sendmessage(win_overwrite,"WM_CLOSE")
  215. sendmessage(win_folderalreadyexists,"WM_CLOSE")
  216. sendmessage(win_illegalchars,"WM_CLOSE")
  217.  
  218. ;for folder sorting
  219. Type folderitem
  220.         Field name$
  221.         Field what
  222. End Type
  223.  
  224. ;other save_gui variables
  225. Global doubleclick=300,singleclick,doubleclicked
  226. Global path$
  227.  
  228. Global filter$,extension$
  229.  
  230. Global save_open ;1=open, 2=save
  231. Global file_list
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239. ;--------------------------------------------------------------------------------------------
  240. ;--------------------------------------------------------------------------------------------
  241. Function FILE_SELECTOR_GADGETS()
  242. ;--------------------------------------------------------------------------------------------                  
  243. ;--------------------------------------------------------------------------------------------
  244.  
  245.         Select appGadgetEvent
  246.  
  247. ;-------MAIN FILE SELECTOR WINDOW------------------------------------------------------------
  248.                                
  249.                         ;CREATE NEW FOLDER BUTTON
  250.                                 Case btn_sav_newfolder
  251.                                 sendmessage(win_newfolder,"WM_OPEN")
  252.                                 sendmessage(win_newfolder,"WM_SETMODAL")
  253.                                 If FileType("New Folder")>1
  254.                                         a=1
  255.                                         While FileType("New Folder "+Str$(a))>1
  256.                                                 a=a+1
  257.                                         Wend
  258.                                         SendMessage(txt_newfolder,"TM_SETTEXT",0,"New Folder "+Str$(a))
  259.                                 Else
  260.                                         SendMessage(txt_newfolder,"TM_SETTEXT",0,"New Folder")
  261.                                 EndIf                          
  262.                         ;GO UP A FOLDER
  263.                                 Case btn_sav_up
  264.                                 ft=FileType(sendmessage(txt_sav_filename,"TM_GETTEXT"))
  265.                                 If MOVE_DIR_UP()=True
  266.                                         If ft=2 Then sendmessage(txt_sav_filename,"TM_SETTEXT",0,"")
  267.                                         GET_DIR
  268.                                 EndIf
  269.                         ;CHOOSE FOLDER FROM COMBO BOX
  270.                                 Case cbo_sav_foldername
  271.                                 i=sendmessage(cbo_sav_foldername,"CM_GETINDEX")+1
  272.                                 c$=sendmessage(cbo_sav_foldername,"CM_GETCAPTION")
  273.                                 f$=""
  274.                                 a=0
  275.                                 Repeat
  276.                                         sendmessage(cbo_sav_foldername,"CM_SETINDEX",a)
  277.                                         cn$=sendmessage(cbo_sav_foldername,"CM_GETCAPTION")
  278.                                         f$=f$+cn$+""
  279.                                         a=a+1
  280.                                 Until cn$=c$
  281.                                 ChangeDir f$
  282.                                 ;       sendmessage(txt_sav_filename,"TM_SETTEXT",0,f$)
  283.                                 If FileType(sendmessage(txt_sav_filename,"TM_GETTEXT"))=2
  284.                                         sendmessage(txt_sav_filename,"TM_SETTEXT",0,"")
  285.                                 EndIf
  286.                                 GET_DIR
  287.                         ;CLICK ON A LIST ENTRY
  288.                                 Case lst_sav_files
  289.                                 f$=SendMessage(lst_sav_files,"LM_GETCAPTION")
  290.                                 If f$<>"" Then sendmessage(txt_sav_filename,"TM_SETTEXT",0,f$)
  291.                                 ;are you double clicking, ie selecting?
  292.                                 If doubleclicked
  293.                                         doubleclicked=False
  294.                                         SELECT_ITEM(f$)
  295.                                 EndIf
  296.                         ;SAVE/OPEN/OVERWRITE BUTTON
  297.                                 Case btn_sav_yes
  298.                                 f$=SendMessage(txt_sav_filename,"TM_GETTEXT")
  299.                                 If f$<>"" Then SELECT_ITEM(f$)
  300.                         ;CANCEL SAVE
  301.                                 Case btn_sav_no
  302.                                 sendmessage(win_sav,"WM_CLOSE")                
  303.                         ;PRESS ENTER WHILE TYPING FILENAME
  304.                                 Case txt_sav_filename
  305.                                 If KeyHit(28) Or KeyHit(156)
  306.                                         f$=SendMessage(txt_sav_filename,"TM_GETTEXT")
  307.                                         If f$<>"" Then SELECT_ITEM(f$)
  308.                                 EndIf
  309.                         ;CONFIRM SAVE BUTTON
  310.                                 Case btn_sav_yes
  311.                                 f$=SendMessage(txt_sav_filename,"TM_GETTEXT")
  312.                                 SELECT_ITEM(f$)
  313.                         ;CHANGE FILTER
  314.                                 Case cbo_sav_filter
  315.                                 f$=sendmessage(cbo_sav_filter,"CM_GETCAPTION")
  316.                                 filter$=EXTRACT_FILTER$(f$)
  317.                                 extension$=EXTRACT_EXTENSION$(filter$)
  318.                                 GET_DIR
  319.                                
  320.                        
  321.                                
  322.                                
  323. ;-------CREATE NEW FOLDER WINDOW------------------------------------------------------------
  324.  
  325.                         ;CANCEL CREATE NEW FOLDER
  326.                                 Case btn_newfolder_no
  327.                                 sendmessage(win_newfolder,"WM_CLOSE")
  328.                         ;CONFIRM CREATE NEW FOLDER
  329.                                 Case btn_newfolder_yes
  330.                                 CREATE_NEW_FOLDER
  331.                         ;ALTERNATIVE CONFIRM - PRESS RETURN OR ENTER
  332.                                 Case txt_newfolder
  333.                                 If KeyHit(28) Or KeyHit(156) Then CREATE_NEW_FOLDER
  334.                                
  335.                                
  336.                                
  337. ;-------ESCAPE FOLDER ALREADY EXISTS WINDOW--------------------------------------------------
  338.  
  339.                         ;OKAY
  340.                                 Case btn_folderalreadyexists_okay
  341.                                 sendmessage(win_folderalreadyexists,"WM_CLOSE")
  342.  
  343.  
  344.  
  345. ;-------ESCAPE ILLEGAL CHARS WINDOW----------------------------------------------------------
  346.  
  347.                         ;OKAY
  348.                                 Case btn_illegalchars_okay
  349.                                 sendmessage(win_illegalchars,"WM_CLOSE")
  350.  
  351.  
  352.  
  353. ;-------OVERWRITE WINDOW---------------------------------------------------------------------
  354.  
  355.                         ;NO
  356.                                 Case btn_overwrite_no
  357.                                 sendmessage(win_overwrite,"WM_CLOSE")
  358.                         ;YES
  359.                                 Case btn_overwrite_yes
  360.                                 sendmessage(win_overwrite,"WM_CLOSE")
  361.                                 f$=sendmessage(txt_sav_filename,"TM_GETTEXT")
  362.                                 sendmessage(win_sav,"WM_CLOSE")
  363.                                 SAVE(f$) ;perhaps put a backup of original file?
  364.  
  365.         End Select
  366.  
  367. End Function
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374. ;-------------------------------------------------------------------------------------------------
  375. Function SAVE_GUI_OTHER_FUNCTIONS()
  376.         ;doubleclick?
  377.         If MouseHit(1)
  378.                 If MilliSecs()<=singleclick+doubleclick
  379.                         doubleclicked=True: singleclick=0
  380.                 Else
  381.                         singleclick=MilliSecs()
  382.                 EndIf
  383.         EndIf
  384.         ;change confirm button text
  385.         f$=SendMessage(txt_sav_filename,"TM_GETTEXT")
  386.         If FileType(f$)<>2
  387.                 ;cannot end with .
  388.                 While Right$(f$,1)="."
  389.                         f$=Left$(f$,Len(f$)-1)
  390.                 Wend
  391.                 ;get current extension
  392.                 If Instr(f$,".",1)
  393.                         a=Len(f$)
  394.                         While Mid$(f$,a,1)<>"."
  395.                                 a=a-1
  396.                         Wend
  397.                         ext$=Right$(f$,Len(f$)-(a-1))
  398.                 Else
  399.                         ext$=""
  400.                 EndIf
  401.                 If Instr(filter$,ext$,1)=0 Or (ext$="" And f$<>"")
  402.                 ;If Instr(f$,".",1)=0
  403.                         f$=f$+extension$
  404.                 EndIf
  405.         EndIf
  406.         Select FileType(f$)
  407.                 Case 0
  408.                         If save_open=2
  409.                                 SendMessage(btn_sav_yes,"BM_SETTEXT","Save")
  410.                                 If f$=""
  411.                                         SendMessage(btn_sav_yes,"BM_DISABLE")
  412.                                 Else
  413.                                         SendMessage(btn_sav_yes,"BM_ENABLE")
  414.                                 EndIf
  415.                         Else
  416.                                 SendMessage(btn_sav_yes,"BM_SETTEXT","Open")
  417.                                 SendMessage(btn_sav_yes,"BM_DISABLE")
  418.                         EndIf
  419.                 Case 1
  420.                         If save_open=2
  421.                                 SendMessage(btn_sav_yes,"BM_SETTEXT","Overwrite")
  422.                         Else
  423.                                 SendMessage(btn_sav_yes,"BM_SETTEXT","Open")
  424.                         EndIf
  425.                         SendMessage(btn_sav_yes,"BM_ENABLE")
  426.                 Case 2
  427.                         If save_open=2 Then SendMessage(btn_sav_yes,"BM_SETTEXT","Open")
  428.                         SendMessage(btn_sav_yes,"BM_ENABLE")
  429.         End Select
  430.        
  431. End Function
  432.  
  433.  
  434.  
  435. ;-------------------------------------------------------------------------------------------------
  436. Function CREATE_NEW_FOLDER()
  437.  
  438.         f$=SendMessage(txt_newfolder,"TM_GETTEXT")
  439.         ;does it already exist?
  440.         If f$<>""
  441.                 If FileType(f$)>0
  442.                         sendmessage(win_folderalreadyexists,"WM_OPEN")
  443.                         sendmessage(win_folderalreadyexists,"WM_SETMODAL")
  444.                 Else
  445.                         ;need to stop certain chars ie *:/?"<>|
  446.                         ff$=ILLEGAL_CHARS(f$)
  447.                         If ff$=f$
  448.                                 ;create new folder
  449.                                 sendmessage(win_newfolder,"WM_CLOSE")
  450.                                 CreateDir CurrentDir$()+f$
  451.                                 GET_DIR
  452.                         Else
  453.                                 sendmessage(txt_newfolder,"TM_SETTEXT",0,ff$)
  454.                                 sendmessage(win_illegalchars,"WM_OPEN")
  455.                                 sendmessage(win_illegalchars,"WM_SETMODAL")
  456.                         EndIf
  457.                 EndIf
  458.         EndIf
  459.  
  460. End Function
  461.  
  462.  
  463.  
  464. ;-------------------------------------------------------------------------------------------------
  465. Function ILLEGAL_CHARS$(f$)
  466.         a=0
  467.         Repeat
  468.                 a=a+1
  469.                 For b=1 To 9
  470.                         If Mid$(f$,a,1)=Mid$("*:/?<>|"+Chr$(34),b,1)
  471.                                 f$=Left$(f$,a-1)+Right$(f$,Len(f$)-a)
  472.                                 a=0
  473.                                 Exit
  474.                         EndIf
  475.                 Next
  476.         Until a=Len(f$)
  477.         Return f$
  478.  
  479. End Function
  480.  
  481.  
  482.  
  483. ;-------------------------------------------------------------------------------------------------
  484. Function SAVE_DIALOGUE(f$,n$)
  485.         If sendmessage(win_sav,"WM_VISIBLE")=0
  486.                 sendmessage(win_sav,"WM_OPEN")
  487.                 sendmessage(win_sav,"WM_SETMODAL")
  488.                 save_open=2
  489.                 SendMessage(btn_sav_yes,"BM_SETTEXT","Save")                                   
  490.                 SendMessage(btn_sav_newfolder,"BM_ENABLE")
  491.                 sendmessage(win_sav,"WM_SETCAPTION","Save") ;doesn't yet work - may in future BlitzUI's
  492.                
  493.                 ;filter box
  494.                 sendmessage(cbo_sav_filter,"CM_RESET") ;get rid of all items in combo box
  495.                 aa=0: fa=0
  496.                 Repeat
  497.                         a=Instr(f$,";",1)
  498.                         If a>0
  499.                                 fi$=Left$(f$,a-1)
  500.                                 f$=Right$(f$,Len(f$)-a)
  501.                         Else
  502.                                 fi$=f$
  503.                         EndIf
  504.                         If Right$(fi$,1)="*"
  505.                                 fa=aa
  506.                                 fi$=Left$(fi$,Len(fi$)-1)
  507.                         EndIf
  508.                         AddComboBoxItem(cbo_sav_filter,0,fi$)
  509.                         aa=aa+1
  510.                 Until a=0
  511.                 sendmessage(cbo_sav_filter,"CM_SETINDEX",fa)
  512.                 f$=sendmessage(cbo_sav_filter,"CM_GETCAPTION")
  513.                 filter$=EXTRACT_FILTER$(f$)
  514.                
  515.                 ;default extension
  516.                 extension$=EXTRACT_EXTENSION$(filter$)
  517.                 ;If Len(n$)>Len(extension$)
  518.                 ;       If Right$(n$,Len(extension$))<>extension$ Then n$=n$+extension$
  519.                 ;Else
  520.                 ;       If n$<>"" Then n$=n$+extension$
  521.                 ;EndIf
  522.                 sendmessage(txt_sav_filename,"TM_SETTEXT",0,n$)
  523.  
  524.                 GET_DIR
  525.                
  526.         EndIf
  527. End Function
  528.  
  529.  
  530.  
  531. ;-------------------------------------------------------------------------------------------------
  532. Function OPEN_DIALOGUE(f$)
  533.         If sendmessage(win_sav,"WM_VISIBLE")=0
  534.                 sendmessage(win_sav,"WM_OPEN")
  535.                 sendmessage(win_sav,"WM_SETMODAL")
  536.                 save_open=1
  537.                 SendMessage(btn_sav_yes,"BM_SETTEXT","Open")
  538.                 SendMessage(btn_sav_yes,"BM_DISABLE")
  539.                 SendMessage(btn_sav_newfolder,"BM_DISABLE")
  540.                
  541.                 sendmessage(win_sav,"WM_SETCAPTION","Open") ;doesn't yet work - may in future BlitzUI's
  542.                
  543.                 ;filter box
  544.                 sendmessage(cbo_sav_filter,"CM_RESET") ;get rid of all items in combo box
  545.                 aa=0: fa=0
  546.                 Repeat
  547.                         a=Instr(f$,";",1)
  548.                         If a>0
  549.                                 fi$=Left$(f$,a-1)
  550.                                 f$=Right$(f$,Len(f$)-a)
  551.                         Else
  552.                                 fi$=f$
  553.                         EndIf
  554.                         If Right$(fi$,1)="*"
  555.                                 fa=aa
  556.                                 fi$=Left$(fi$,Len(fi$)-1)
  557.                         EndIf
  558.                         AddComboBoxItem(cbo_sav_filter,0,fi$)
  559.                         aa=aa+1
  560.                 Until a=0
  561.                 sendmessage(cbo_sav_filter,"CM_SETINDEX",fa)
  562.                 f$=sendmessage(cbo_sav_filter,"CM_GETCAPTION")
  563.                 filter$=EXTRACT_FILTER$(f$)
  564.                 extension$=""
  565.                
  566.                 GET_DIR
  567.                
  568.         EndIf
  569. End Function
  570.  
  571.  
  572.  
  573. ;-------------------------------------------------------------------------------------------------
  574. Function EMPTY_DIR_LIST()
  575.         For dir.folderitem=Each folderitem
  576.                 Delete dir
  577.         Next
  578. End Function
  579.  
  580.  
  581.  
  582. ;-------------------------------------------------------------------------------------------------
  583. Function EXTRACT_EXTENSION$(f$)
  584.         If f$=""
  585.                 e$=""
  586.         Else
  587.                 a=Instr(f$," ",1)
  588.                 If a>0
  589.                         e$=Left$(f$,a-1)
  590.                 Else
  591.                         e$=f$
  592.                 EndIf
  593.         EndIf
  594.         Return e$
  595. End Function
  596.  
  597.  
  598.  
  599. ;-------------------------------------------------------------------------------------------------
  600. Function EXTRACT_FILTER$(f$)
  601.         If f$="All Files" Then f$=""
  602.         a=Instr(f$,"(",1)
  603.         If a>0 Then f$=Right$(f$,Len(f$)-a)
  604.         a=Instr(f$,")",1)
  605.         If a>0 Then f$=Left$(f$,a-1)
  606.         If f$=".*" Then f$=""
  607.         Return f$
  608. End Function
  609.  
  610.  
  611.  
  612. ;-------------------------------------------------------------------------------------------------
  613. Function EXTRACT_TOP_DIR$(p$)
  614.         ;;take off last
  615.         ;p$=Left$(p$,Len(p$)-1)
  616.         If Instr(p$,"",1)<Len(p$)
  617.                 l=Len(p$)-1
  618.                 While Mid$(p$,l,1)<>""
  619.                         l=l-1
  620.                 Wend
  621.                 p$=Right$(p$,Len(p$)-l)
  622.         EndIf
  623.         Return p$
  624. End Function
  625.  
  626.  
  627.  
  628. ;------------------------------------------------------------------------------------------
  629. Function MOVE_DIR_UP()
  630.         LastSlash=0
  631.         Slash=0
  632.         Repeat
  633.                 Slash=Instr(path$,"",Slash+1)
  634.                 If Slash>0 And Slash<Len(path$)
  635.                         LastSlash=Slash
  636.                 EndIf
  637.         Until Slash=0
  638.         If Left(path$,LastSlash)<>path$
  639.                 path$=Left(path$,LastSlash)
  640.         EndIf
  641.         If path$<>CurrentDir$()
  642.                 ChangeDir path$
  643.                 Return True
  644.         Else
  645.                 Return False
  646.         EndIf
  647. End Function
  648.  
  649.  
  650.  
  651. ;------------------------------------------------------------------------------------------
  652. Function SELECT_ITEM(f$)
  653.         ;cannot end with .
  654.         While Right$(f$,1)="."
  655.                 f$=Left$(f$,Len(f$)-1)
  656.         Wend
  657.         ;add default extension?
  658.         If FileType(f$)<>2
  659.                 ;get current extension
  660.                 If Instr(f$,".",1)
  661.                         a=Len(f$)
  662.                         While Mid$(f$,a,1)<>"."
  663.                                 a=a-1
  664.                         Wend
  665.                         ext$=Right$(f$,Len(f$)-(a-1))
  666.                 Else
  667.                         ext$=""
  668.                 EndIf
  669.                 If Instr(filter$,ext$,1)=0 Or (ext$="" And f$<>"")
  670.                 ;If Right$(f$,Len(extension$))<>extension$
  671.                         f$=f$+extension$
  672.                 EndIf
  673.         EndIf
  674.         Select FileType(f$)
  675.         ;folder?
  676.         Case 2
  677.                 sendmessage(txt_sav_filename,"TM_SETTEXT",0,"")
  678.                 path$=CurrentDir$()+f$
  679.                 ChangeDir path$
  680.                 GET_DIR()
  681.         ;file already existing?
  682.         Case 1
  683.                 If save_open=2
  684.                         sendmessage(win_overwrite,"WM_OPEN")
  685.                         sendmessage(win_overwrite,"WM_SETMODAL")
  686.                 Else
  687.                         sendmessage(win_sav,"WM_CLOSE")
  688.                         OPEN(f$)
  689.                 EndIf
  690.         ;new filename?
  691.         Case 0
  692.                 If save_open=2
  693.                         ;any illegal characters ie *:/?"<>|
  694.                         ff$=ILLEGAL_CHARS(f$)
  695.                         If ff$=f$
  696.                                 While Right$(f$,1)="."
  697.                                         f$=Left$(f$,Len(f$)-1)
  698.                                 Wend
  699.                                 ;NOW does it already exist?
  700.                                 If FileType(f$)<>0
  701.                                 Else
  702.                                         ;create new file
  703.                                         sendmessage(win_sav,"WM_CLOSE")
  704.                                         SAVE(f$)
  705.                                 EndIf
  706.                         Else
  707.                                 sendmessage(txt_sav_filename,"TM_SETTEXT",0,ff$)
  708.                                 sendmessage(win_illegalchars,"WM_OPEN")
  709.                                 sendmessage(win_illegalchars,"WM_SETMODAL")
  710.                         EndIf
  711.                 EndIf
  712.         End Select
  713. End Function
  714.  
  715.  
  716.  
  717. ;------------------------------------------------------------------------------------------
  718. Function GET_DIR()
  719.  
  720.         ;set folder name
  721.         path$=CurrentDir$()
  722.         ;If Len(path$)>3 Then folder$=EXTRACT_TOP_DIR$(path$) Else folder$=path$
  723.         folder$=EXTRACT_TOP_DIR$(path$)
  724.         ;sendmessage(txt_sav_foldername,"TM_SETTEXT",0,folder$)
  725.        
  726.         ;folder combo box
  727.         path_c$=path$
  728.         n=0 ;number of folders
  729.         o=1
  730.         Repeat
  731.                 o=Instr(path_c$,"",o)+1
  732.                 If o>1 n=n+1
  733.                 If KeyDown(1) End
  734.         Until o=1
  735.         nm=n
  736.         sendmessage(cbo_sav_foldername,"CM_RESET")
  737.         Repeat
  738.                 path_t$=EXTRACT_TOP_DIR$(path_c$)
  739.                 AddComboBoxItem(cbo_sav_foldername,n,Left$(path_t$,Len(path_t$)-1))
  740.                 path_c$=Left$(path_c$,Len(path_c$)-Len(path_t$))
  741.                 n=n-1
  742.                 If KeyDown(1) End
  743.         Until path_c$=""
  744.         sendmessage(cbo_sav_foldername,"CM_SETINDEX",nm-1)
  745.  
  746.        
  747.        
  748.         EMPTY_DIR_LIST
  749.         ;put files into type
  750.         items=0
  751.         thisdir=ReadDir(path$)
  752.         Repeat
  753.                 ;f$=Lower$(NextFile$(thisdir))
  754.                 f$=NextFile$(thisdir)
  755.                 If f$<>"" And f$<>"." And f$<>".."
  756.                         ;extension filtering
  757.                         legal=False
  758.                         If filter$="" Or FileType(f$)=2
  759.                                 legal=True
  760.                         Else
  761.                                 ;get the extension of the item
  762.                                 If Instr(f$,".",1)
  763.                                         ff=Len(f$)
  764.                                         While Mid$(f$,ff,1)<>"."
  765.                                                 ff=ff-1
  766.                                         Wend
  767.                                         ext$=Right$(f$,Len(f$)-(ff-1))
  768.                                         If Instr(filter$,ext$,1)>0
  769.                                                 legal=True
  770.                                         EndIf
  771.                                 EndIf
  772.                         EndIf
  773.                         If legal
  774.                                 dir.folderitem=New folderitem
  775.                                 dir
  776. ame$=f$
  777.                                 dirwhat=FileType(f$)
  778.                                 items=items+1
  779.                         EndIf
  780.                 EndIf
  781.         Until f$=""
  782.         CloseDir thisdir
  783.         ;SORT ALPHABETICALLY AND INTO FOLDERS / FILES / FILE TYPES
  784.         dir.folderitem=First folderitem
  785.         Repeat
  786.                 If dir=Null Then Exit
  787.                 a$=Lower$(dir
  788. ame$): aa=dirwhat
  789.                         ;put extension before name
  790.                         If Instr(a$,".")
  791.                                 aaa=Len(a$)
  792.                                 Repeat
  793.                                         aaa=aaa-1
  794.                                 Until Mid$(a$,aaa,1)="."
  795.                                 a$=Right$(a$,Len(a$)-(aaa-1))+Left$(a$,aaa-1)
  796.                         EndIf
  797.                 dir.folderitem=After dir
  798.                 If dir=Null Then Exit
  799.                 b$=Lower$(dir
  800. ame$): bb=dirwhat
  801.                         ;put extension before name
  802.                         If Instr(b$,".")
  803.                                 bbb=Len(b$)
  804.                                 Repeat
  805.                                         bbb=bbb-1
  806.                                 Until Mid$(b$,bbb,1)="."
  807.                                 b$=Right$(b$,Len(b$)-(bbb-1))+Left$(b$,bbb-1)
  808.                         EndIf
  809.                 If (bb=aa And a$>b$) Or bb>aa
  810.                         Insert dir Before Before dir
  811.                         If dir.folderitem<>First folderitem Then dir=Before dir
  812.                 EndIf
  813.         Forever
  814.         ;put into GUI
  815.         file_list=0
  816.         sendmessage(lst_sav_files,"LM_RESET") ;get rid of all items in list
  817.         For dir.folderitem=Each folderitem
  818.                 If dirwhat=2
  819.                         AddListBoxItem(lst_sav_files,0,dir
  820. ame$,imgOpen)
  821.                 Else
  822.                         AddListBoxItem(lst_sav_files,0,dir
  823. ame$,imgNew)
  824.                 EndIf
  825.                 file_list=file_list+1
  826.         Next
  827. End Function
  828.  
  829.  
  830.  
  831. ;------------------------------------------------------------------------------------------
  832. Function MAKE_ICONS()
  833.  
  834. Restore NewIcon
  835. imgNew = createimage(16, 16)
  836. for A = 0 to 15
  837.         for B = 0 to 15
  838.                 read RGB
  839.                 writepixel B, A, RGB, imagebuffer( imgNew )
  840.         next
  841. next
  842. MaskImage imgNew, 255, 0, 0
  843.  
  844. Restore OpenIcon
  845. imgOpen = CreateImage(16, 16)
  846. For A = 0 To 15
  847.         For B = 0 To 15
  848.                 Read RGB
  849.                 WritePixel B, A, RGB, ImageBuffer( imgOpen )
  850.         Next
  851. Next
  852. MaskImage imgOpen, 255, 0, 0
  853.  
  854. Restore NewFolderIcon
  855. imgNewFolder = CreateImage(16, 16)
  856. For A = 0 To 15
  857.         For B = 0 To 15
  858.                 Read RGB
  859.                 WritePixel B, A, RGB, ImageBuffer( imgNewFolder )
  860.         Next
  861. Next
  862. MaskImage imgNewFolder, 0, 255, 0
  863.  
  864. Restore UpFolderIcon
  865. imgUpFolder = CreateImage(16, 16)
  866. For A = 0 To 15
  867.         For B = 0 To 15
  868.                 Read RGB
  869.                 WritePixel B, A, RGB, ImageBuffer( imgUpFolder )
  870.         Next
  871. Next
  872. MaskImage imgUpFolder, 0, 255, 0
  873.  
  874. End Function
  875.  
  876.  
  877.  
  878. ;NEW ICON
  879. ;--------
  880. .NewIcon
  881. Data -65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536
  882. Data -65536,-65536,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-65536,-65536,-65536,-65536,-65536,-65536
  883. Data -65536,-65536,-16777216,-1,-1,-1,-1,-1,-1,-8355712,-16777216,-65536,-65536,-65536,-65536,-65536
  884. Data -65536,-65536,-16777216,-1,-1,-1,-1,-1,-1,-8355712,-1,-16777216,-65536,-65536,-65536,-65536
  885. Data -65536,-65536,-16777216,-1,-1,-1,-1,-1,-1,-16777216,-16777216,-16777216,-16777216,-65536,-65536,-65536
  886. Data -65536,-65536,-16777216,-1,-1,-1,-1,-1,-1,-1,-1,-1,-16777216,-65536,-65536,-65536
  887. Data -65536,-65536,-16777216,-1,-1,-1,-1,-1,-1,-1,-1,-1,-16777216,-65536,-65536,-65536
  888. Data -65536,-65536,-16777216,-1,-1,-1,-1,-1,-1,-1,-1,-1,-16777216,-65536,-65536,-65536
  889. Data -65536,-65536,-16777216,-1,-1,-1,-1,-1,-1,-1,-1,-1,-16777216,-65536,-65536,-65536
  890. Data -65536,-65536,-16777216,-1,-1,-1,-1,-1,-1,-1,-1,-1,-16777216,-65536,-65536,-65536
  891. Data -65536,-65536,-16777216,-1,-1,-1,-1,-1,-1,-1,-1,-1,-16777216,-65536,-65536,-65536
  892. Data -65536,-65536,-16777216,-1,-1,-1,-1,-1,-1,-1,-1,-1,-16777216,-65536,-65536,-65536
  893. Data -65536,-65536,-16777216,-1,-1,-1,-1,-1,-1,-1,-1,-1,-16777216,-65536,-65536,-65536
  894. Data -65536,-65536,-16777216,-1,-1,-1,-1,-1,-1,-1,-1,-1,-16777216,-65536,-65536,-65536
  895. Data -65536,-65536,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-65536,-65536,-65536
  896. Data -65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536
  897.  
  898.  
  899. ;OPEN ICON
  900. ;---------
  901. .OpenIcon
  902. Data -65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536
  903. Data -65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-16777216,-16777216,-16777216,-65536,-65536,-65536,-65536
  904. Data -65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-16777216,-65536,-65536,-65536,-16777216,-65536,-16777216,-65536
  905. Data -65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-16777216,-16777216,-65536
  906. Data -65536,-16777216,-16777216,-16777216,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-16777216,-16777216,-16777216,-65536
  907. Data -16777216,-459584,-459584,-459584,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-65536,-65536,-65536,-65536,-65536
  908. Data -16777216,-459584,-459584,-459584,-459584,-459584,-459584,-459584,-459584,-459584,-16777216,-65536,-65536,-65536,-65536,-65536
  909. Data -16777216,-459584,-459584,-459584,-459584,-459584,-459584,-459584,-459584,-459584,-16777216,-65536,-65536,-65536,-65536,-65536
  910. Data -16777216,-459584,-459584,-459584,-459584,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-65536
  911. Data -16777216,-459584,-459584,-459584,-16777216,-7829504,-4145152,-7829504,-4145152,-7829504,-4145152,-7829504,-4145152,-7829504,-16777216,-65536
  912. Data -16777216,-459584,-459584,-16777216,-7829504,-4145152,-7829504,-4145152,-7829504,-4145152,-7829504,-4145152,-7829504,-16777216,-65536,-65536
  913. Data -16777216,-459584,-16777216,-7829504,-4145152,-7829504,-4145152,-7829504,-4145152,-7829504,-4145152,-7829504,-16777216,-65536,-65536,-65536
  914. Data -16777216,-16777216,-7829504,-4145152,-7829504,-4145152,-7829504,-4145152,-7829504,-4145152,-7829504,-16777216,-65536,-65536,-65536,-65536
  915. Data -16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-65536,-65536,-65536,-65536,-65536
  916. Data -65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536
  917. Data -65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536
  918.  
  919. ;NEW FOLDER ICON
  920. ;---------
  921. .NewFolderIcon
  922. Data -16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936
  923. Data -16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936
  924. Data -16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-65536,-16711936,-16711936,-16711936,-16711936
  925. Data -16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-65536,-16711936,-16711936,-65536,-16711936,-16711936,-65536,-16711936
  926. Data -16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-65536,-16711936,-65536,-16711936,-65536,-16711936,-16711936
  927. Data -16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-65536,-65536,-65536,-16711936,-16711936,-16711936
  928. Data -16711936,-16711936,-16777216,-16777216,-16777216,-16711936,-16711936,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536,-65536
  929. Data -16711936,-16777216,-459584,-459584,-459584,-16777216,-16777216,-16777216,-16777216,-16777216,-65536,-65536,-65536,-16711936,-16711936,-16711936
  930. Data -16711936,-16777216,-459584,-459584,-459584,-459584,-459584,-459584,-459584,-65536,-459584,-65536,-16711936,-65536,-16711936,-16711936
  931. Data -16711936,-16777216,-459584,-459584,-459584,-459584,-459584,-459584,-65536,-459584,-459584,-65536,-16711936,-16711936,-65536,-16711936
  932. Data -16711936,-16777216,-459584,-459584,-459584,-459584,-16777216,-16777216,-16777216,-16777216,-16777216,-65536,-16777216,-16777216,-16777216,-16777216
  933. Data -16711936,-16777216,-459584,-459584,-459584,-16777216,-7829504,-4145152,-7829504,-4145152,-7829504,-4145152,-7829504,-4145152,-7829504,-16777216
  934. Data -16711936,-16777216,-459584,-459584,-16777216,-7829504,-4145152,-7829504,-4145152,-7829504,-4145152,-7829504,-4145152,-7829504,-16777216,-16711936
  935. Data -16711936,-16777216,-459584,-16777216,-7829504,-4145152,-7829504,-4145152,-7829504,-4145152,-7829504,-4145152,-7829504,-16777216,-16711936,-16711936
  936. Data -16711936,-16777216,-16777216,-7829504,-4145152,-7829504,-4145152,-7829504,-4145152,-7829504,-4145152,-7829504,-16777216,-16711936,-16711936,-16711936
  937. Data -16711936,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711936,-16711936,-16711936,-16711936
  938.  
  939.  
  940. ;UP FOLDER ICON
  941. ;---------
  942. .UpFolderIcon
  943. Data -16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16777216,-16777216,-16711936,-16711936,-16711936,-16711936
  944. Data -16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16777216,-65281,-65281,-16777216,-16711936,-16711936,-16711936
  945. Data -16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16777216,-65281,-65281,-65281,-65281,-16777216,-16711936,-16711936
  946. Data -16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16777216,-16777216,-16777216,-65281,-65281,-16777216,-16777216,-16777216,-16711936
  947. Data -16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16777216,-65281,-65281,-16777216,-16711936,-16711936,-16711936
  948. Data -16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16711936,-16777216,-65281,-65281,-16777216,-16711936,-16711936,-16711936
  949. Data -16711936,-16711936,-16777216,-16777216,-16777216,-16711936,-16711936,-16711936,-16711936,-16777216,-65281,-65281,-16777216,-16711936,-16711936,-16711936
  950. Data -16711936,-16777216,-459584,-459584,-459584,-16777216,-16777216,-16777216,-16777216,-16777216,-65281,-65281,-16777216,-16711936,-16711936,-16711936
  951. Data -16711936,-16777216,-459584,-459584,-459584,-459584,-459584,-459584,-459584,-16777216,-65281,-65281,-16777216,-16711936,-16711936,-16711936
  952. Data -16711936,-16777216,-459584,-459584,-459584,-459584,-459584,-459584,-459584,-16777216,-65281,-65281,-16777216,-16711936,-16711936,-16711936
  953. Data -16711936,-16777216,-459584,-459584,-459584,-459584,-16777216,-16777216,-16777216,-16777216,-65281,-65281,-16777216,-16777216,-16777216,-16777216
  954. Data -16711936,-16777216,-459584,-459584,-459584,-16777216,-7829504,-4145152,-7829504,-16777216,-65281,-65281,-16777216,-4145152,-7829504,-16777216
  955. Data -16711936,-16777216,-459584,-459584,-16777216,-7829504,-4145152,-7829504,-4145152,-16777216,-65281,-65281,-16777216,-7829504,-16777216,-16711936
  956. Data -16711936,-16777216,-459584,-16777216,-7829504,-4145152,-7829504,-4145152,-7829504,-16777216,-16777216,-16777216,-16777216,-16777216,-16711936,-16711936
  957. Data -16711936,-16777216,-16777216,-7829504,-4145152,-7829504,-4145152,-7829504,-4145152,-7829504,-4145152,-7829504,-16777216,-16711936,-16711936,-16711936
  958. Data -16711936,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16777216,-16711936,-16711936,-16711936,-16711936
  959.  
  960.  
  961. ;------------------------------------------------------------------------------------
  962. ;------------------------------------------------------------------------------------
  963. ;------------------------------------------------------------------------------------
  964. ;------------------------------------------------------------------------------------
  965. ;------------------------------------------------------------------------------------
  966. ;------------------------------------------------------------------------------------
  967. ;------------------------------------------------------------------------------------


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal