November 25, 2020, 08:04:37 AM

Author Topic: [bmx] ListManager by degac [ 1+ years ago ]  (Read 525 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bmx] ListManager by degac [ 1+ years ago ]
« on: June 29, 2017, 12:28:41 AM »
Title : ListManager
Author : degac
Posted : 1+ years ago

Description : This gadget adds some command-buttons to a standard ListGadget to allow to add, remove, move up & down, clear the items of a list, directly by the user.



Here the two iconstrips the gadget needs to work correctly




Edit: 15-08-2010

You can grab all the 'extra gadgets' from <a href="http://www.graphio.net/download/maxgui_extragadget.zip" target="_blank">here[/url]
This zip file contains:
- a calendar
- a datepicker
- a listboxmanager
- a checklist
- a new progressbar


Code :
Code: BlitzMax
  1. Rem
  2. '
  3. 'List Manager
  4. '       v.2.1 - Degac
  5. '       29-08-2009
  6. '
  7. SuperStrict
  8. Import MaxGUI.Drivers
  9. Local window:TGadget = CreateWindow("ListManager v. 2.0",0,0,660,300,,WINDOW_titlebar|window_center)
  10.  
  11. 'this opens a ListManager that handles user-text-item ORDERED
  12. Local listbox1:tlistManager=CreateListManager( 10,10,210,200,window,LIST_ITEMS|LIST_FORCEORDER)
  13. 'this opens a ListManager that handles files (default LIST_FILES|LIST_SHOWONLYNAME)
  14. Local listbox2:tlistManager=CreateListManager(220,10,210,200,window)
  15. 'this opens a ListManager that handles user-text-item not ordered
  16. Local listbox3:tlistManager=CreateListManager(430,10,210,200,window,LIST_ITEMS)
  17. DisableGadget listbox3
  18.  
  19. 'remember to set the Filter...
  20.  
  21. listbox2.SelectFilter("JPG;PNG")
  22. listbox2.SelectPath("C:Documents and Settingsdegac.AMIGA.000DocumentiImmagini")
  23.  
  24.  
  25. Local button1:tgadget   =CreateButton("Disable 1",10,230,80,25,window)
  26. Local button2:tgadget   =CreateButton("Enable 1",100,230,80,25,window)
  27.  
  28.  
  29. Local array:String[]=["This","is","a","test"]
  30.  
  31. listbox3.SetItemArray(array)
  32.  
  33. Print "What is the 3rd element ? "+GadgetItemText(listbox3,2)
  34. ModifyGadgetItem listbox3,2,"New item"
  35.  
  36. AddGadgetItem listbox1,"This is a new line #0"
  37. AddGadgetItem listbox1,"This is a new line #1"
  38. AddGadgetItem listbox1,"This is a new line #2"
  39. AddGadgetItem listbox1,"This is a new line #3"
  40.  
  41. InsertGadgetItem listbox1,2,"---changed"
  42. RemoveGadgetItem listbox1,1
  43.  
  44. Print "How many items in listbox1? :" +CountGadgetItems(listbox1)
  45.  
  46.  
  47. Local _terminate:Int=False
  48.  
  49. While _terminate=False
  50.         WaitEvent
  51.                 Select EventID()
  52.                
  53.                 Case event_gadgetaction
  54.                         If EventSource()=button1        DisableGadget listbox1
  55.                         If EventSource()=button2        EnableGadget listbox1
  56.                        
  57.                
  58.                                                
  59.                 Case event_windowclose
  60.                         If EventSource() = window _terminate=True
  61.                 End Select
  62. Wend
  63.  
  64. FreeGadget listbox1
  65. FreeGadget listbox2
  66. End
  67.  
  68.  
  69. End Rem
  70.  
  71. Rem
  72.                
  73.                 This gadget creates a listbox with some useful command-buttons the allow to
  74.                
  75.                         ADD (a user text or a file)
  76.                         REMOVE an item
  77.                         Move UP
  78.                         Move DOWN
  79.                         Clear all the items
  80.                         Scan a folder to add determinated files based on a filter
  81.                
  82.                
  83.                 Options style:
  84.                
  85.                 LIST_FILES                      with this style the ListManager allows to add files and
  86.                                                 to scan a folder to add files based on the filter.
  87.                                                 Additional command-methods:
  88.                                        
  89.                                                 - SelectFilter("jpg,png,tga")
  90.                                                 - SelectPath("where/open/my/folder")
  91.                                                
  92.                 LIST_SHOWONLYNAME               used in conjunction with LIST_FILES shows in the listbox
  93.                                                 only the file name (without path and extension). The tips contains full PATH
  94.  
  95.                 LIST_ITEMS                      manages simple user-text input
  96.                                                
  97.                 LIST_FORCEORDER         only effect the LIST_ITEMS. Every item manually added is sorted in alphabetic
  98.                                                 order.
  99.                                                
  100.                                                
  101.                 Standard MaxGUI commands reconigzed
  102.                
  103.                 DisableGadget   listmanager
  104.                 EnableGadget    listmanager
  105.                 SetGadgetColor  listmanager,red,green,blue
  106.                 ModifyGadgetItem listmanager,index,text,flags,icon,tip,extra
  107.                 RemoveGadgetItem listmanager,index
  108.                 AddGadgetItem    listmanager,index
  109.                 GadgetItemText   listmanager,index
  110.                 InsertGadgetItem listmanager,index             
  111.                
  112.                 Not standard method available
  113.                
  114.                 SelectFilter(for_file_filtering)
  115.                 SelectPath(path_where_to_open)
  116.                 GetItemList                     returns a list with the items in the listbox
  117.                 GetItemArray            returns a string array with the items in the listbox
  118.                 SetItemList(list)               fill the listbox with the items contained in the list
  119.                 SetItemArray(array$[])  fill the listbox with the items contained in the string array
  120.  
  121.                
  122.                 the gadget needs 2 images for the buttons: enabled and disabled icons.
  123.                 If there are not images, the gadget button will show some text (+ - ^ v Clear Dir) to allow the user to use it
  124.  
  125.                 to do:
  126.                
  127.                 - handle window resizing
  128.                 - handle EVENT_GADGETLOSTFOCUS without errors
  129.  
  130. End Rem
  131.  
  132. Function CreateListManager:TlistManager(x:Int,y:Int,w:Int,h:Int,group:TGadget = Null,_style:Int = LIST_FILES|LIST_SHOWONLYNAME|LIST_FORCEORDER,filter:String="exe")
  133.         If group = Null Return Null    
  134.         Return TlistManager.Create(x,y,w,h,group,_style)
  135. End Function
  136.  
  137. Const LIST_FILES:Int=1
  138. Const LIST_ITEMS:Int=2
  139. Const LIST_SHOWONLYNAME:Int=4
  140. Const LIST_FORCEORDER:Int=8
  141.  
  142. Global _list_manager_icons:ticonstrip
  143. Global _list_manager_icons_disabled:ticonstrip
  144.  
  145.  
  146. Type TlistManager Extends Tproxygadget
  147.  
  148.         Global list_listmanager:TList=New TList
  149.  
  150.         Field sid:String
  151.         Field parent:tgadget
  152.         Field panel:TGadget
  153.         Field list_box:tgadget
  154.         Field btn_add:tgadget
  155.         Field btn_remove:tgadget
  156.         Field btn_up:tgadget
  157.         Field btn_down:tgadget
  158.         Field btn_clear:tgadget
  159.         Field btn_AddDir:tgadget
  160.         Field txt_item:tgadget
  161.         Field filter:String,path:String,reqfilter:String
  162.         Field filter_items:String[]
  163.        
  164.         Field style:Int
  165.        
  166.  
  167.         Method SetEnabled(sta:Int = True)
  168.                 If sta EnableAll() Else DisableAll()
  169.         End Method
  170.        
  171.         Method SelectFilter(_filter:String="")
  172.                 'filter examples = EXE;TXT;JPG
  173.                 If _filter=""
  174.                         filter=""
  175.                         filter_items=filter_items[..0] 
  176.                         reqfilter=""   
  177.                         Return
  178.                 End If
  179.                 filter=_filter
  180.                 Local Current_item:Int=0
  181.                 For Local it:String=EachIn _filter.split(";")
  182.                         filter_items=filter_items[..current_item+1]
  183.                         filter_items[current_item]=Lower(it)
  184.                         reqfilter=reqfilter+Lower(it)+","
  185.                         current_item:+1
  186.                 Next
  187.                 reqfilter=reqfilter[..Len(reqfilter)-1]
  188.                 reqfilter="User:"+reqfilter+";All files:*"
  189.                
  190.         End Method
  191.        
  192.         Method SelectPath(_path:String="")
  193.                 path=_path
  194.         End Method
  195.        
  196.         Method GetItem:String()
  197.                 Local ipos:Int=SelectedGadgetItem(list_box)
  198.                 If ipos>-1  Return String(GadgetItemExtra(list_box,ipos))
  199.                 Return ""
  200.  
  201.         End Method
  202.  
  203.         Method SetItem(index:Int,text:String,tip:String,icon:Int,extra:Object,flags:Int)
  204.                 ?debug
  205.                 If index<0 Or index>CountGadgetItems(list_box) Throw "Index out of range"
  206.                 ?
  207.                 ModifyGadgetItem list_box,index,text,flags,icon,tip,extra
  208.         End Method
  209.        
  210.         Method InsertItem(index:Int,text:String,tip:String,icon:Int,extra:Object,flags:Int)
  211.                 ?debug
  212.                 If index<0 Or index>CountGadgetItems(list_box)  Throw "Index out of range"
  213.                 ?      
  214.                
  215.                 If index=CountGadgetItems(list_box)
  216.                         AddGadgetItem list_box,text,flags,icon,tip,extra
  217.                 Else
  218.                         InsertGadgetItem list_box,index,text,flags,icon,tip,extra
  219.                 End If
  220.                
  221.         End Method
  222.        
  223.         Method RemoveItem:Int(index:Int)
  224.                 ?debug
  225.                 If index<0 Or index>CountGadgetItems(list_box)  Throw "Index out of range"
  226.                 ?      
  227.                 RemoveGadgetItem list_box,index
  228.         End Method
  229.  
  230.         Method ItemCount:Int()
  231.                 Return CountGadgetItems(list_box)
  232.         End Method
  233.        
  234.        
  235.         Method CleanUp()
  236.                 RemoveHook EmitEventHook,EventHandler,Self
  237.  
  238.                 If list_box FreeGadget list_box;list_box=Null
  239.                 If btn_Add FreeGadget btn_add;btn_add=Null
  240.                 If btn_remove FreeGadget btn_remove;btn_remove=Null
  241.                 If btn_up FreeGadget btn_up;btn_UP=Null
  242.                 If btn_down FreeGadget btn_down;btn_down=Null
  243.                 If btn_clear FreeGadget btn_clear;btn_clear=Null
  244.                 If btn_adddir FreeGadget btn_AddDir;btn_addDir=Null
  245.                 If txt_item:tgadget FreeGadget txt_item:tgadget;txt_item=Null
  246.                 If panel FreeGadget panel;panel = Null
  247.                
  248.                 Super.Free
  249.         End Method
  250.  
  251.         Method SetColor(red:Int,green:Int,blue:Int)
  252.                 SetGadgetColor list_box,red,green,blue
  253.         End Method
  254.        
  255.         Method ItemText:String(index:Int)
  256.                 ?debug
  257.                 If index<0 Or index>CountGadgetItems(list_box) Throw "Index out of range"
  258.                 ?
  259.                 Return GadgetItemText(list_box,index)
  260.         End Method
  261.  
  262.        
  263.         Method SetItemList(_content:TList=Null)
  264.                 If _content=Null Return
  265.                 For Local ss:String=EachIn _content
  266.                         If ss<>Null AddGadgetItem list_box,ss,0,-1,ss,ss
  267.                 Next
  268.                
  269.         End Method
  270.        
  271.         Method SetItemArray(_content:String[])
  272.                 If _content=Null Return
  273.                 For Local ss:String=EachIn _content
  274.                         If ss<>Null AddGadgetItem list_box,ss,0,-1,ss,ss
  275.                 Next
  276.  
  277.         End Method
  278.        
  279.         Method GetItemList:TList()
  280.                 Local temp:TList=New TList
  281.                 For Local c:Int=0 Until CountGadgetItems(list_box)
  282.                         temp.addlast String(GadgetItemExtra(list_box,c))
  283.                 Next
  284.                 Return temp
  285.         End Method
  286.        
  287.         Method GetItemArray:String[]()
  288.                 Local temp:String[]
  289.                 Local size:Int
  290.                 For Local c:Int=0 Until CountGadgetItems(list_box)
  291.                         temp=temp[..size+1]
  292.                         temp[size]=String(GadgetItemExtra(list_box,c))
  293.                         size:+1
  294.                 Next
  295.                 Return temp
  296.         End Method
  297.                
  298.         Function Create:TlistManager(x:Int,y:Int,w:Int,h:Int,group:TGadget,style:Int = LIST_FILES)
  299.                 Local sp:TlistManager= New TlistManager
  300.                 Local sizew:Int=(w-10)/5
  301.                 Local hh:Int=50
  302.                 If style&LIST_FILES Then sizew=(w-10)/6;hh=25
  303.                 sp.panel =              CreatePanel(x,y,w,h,group)
  304.        
  305.                 sp.list_box=    CreateListBox(5,1,w-10,h-hh-3,sp.panel)
  306.                 sp.btn_add=             CreateButton(" + "      ,5               ,h-hh,sizew,22,sp.panel)
  307.                 sp.btn_remove=  CreateButton(" - "      ,5+sizew         ,h-hh,sizew,22,sp.panel)
  308.                 sp.btn_up=              CreateButton(" ^ "      ,5+sizew*2,h-hh,sizew,22,sp.panel)
  309.                 sp.btn_down=    CreateButton(" v "      ,5+sizew*3,h-hh,sizew,22,sp.panel)
  310.                 sp.btn_clear=   CreateButton("Clear"    ,5+sizew*4,h-hh,sizew,22,sp.panel)
  311.  
  312.                 If style&LIST_FILES
  313.                         sp.btn_adddir=  CreateButton("Dir",5+sizew*5,h-hh,sizew,22,sp.panel)
  314.                         SetGadgetToolTip sp.btn_adddir,"Scan a folder and adds the files"
  315.                 Else
  316.                         sp.txt_item=    CreateTextField(5,h-hh+24,w-10,22,sp.panel)
  317.                 End If
  318.        
  319.                 If _list_manager_icons=Null _list_manager_icons=LoadIconStrip("listmanager_icons.png")
  320.                 If _list_manager_icons_disabled=Null _list_manager_icons_disabled=LoadIconStrip("listmanager_icons_disabled.png")
  321.                
  322.                 sp.EnableIcons()
  323.                                
  324.                 SetGadgetToolTip sp.btn_add             ,"Add an item"
  325.                 SetGadgetToolTip sp.btn_remove  ,"Remove an item"
  326.                 SetGadgetToolTip sp.btn_up              ,"Move up the selected item"
  327.                 SetGadgetToolTip sp.btn_down    ,"Move down the selected item"
  328.                 SetGadgetToolTip sp.btn_clear   ,"Clear all the items"
  329.                 sp.style=style
  330.                 sp.SetProxy(sp.panel)
  331.  
  332.                 AddHook(EmitEventHook,EventHandler,sp,-1)
  333.                
  334.                 list_listmanager.addlast sp
  335.        
  336.                 Return sp
  337.         End Function
  338.        
  339.         Method EnableIcons()
  340.                 Local pix:TPixmap
  341.                 If _list_manager_icons<>Null
  342.                         pix=PixmapFromIconStrip(_list_manager_icons,0)
  343.                         SetGadgetPixmap btn_add,pix,GADGETPIXMAP_ICON|GADGETPIXMAP_NOTEXT
  344.                         pix=PixmapFromIconStrip(_list_manager_icons,1)
  345.                         SetGadgetPixmap btn_remove,pix,GADGETPIXMAP_ICON|GADGETPIXMAP_NOTEXT
  346.                         pix=PixmapFromIconStrip(_list_manager_icons,2)
  347.                         SetGadgetPixmap btn_up,pix,GADGETPIXMAP_ICON|GADGETPIXMAP_NOTEXT
  348.                         pix=PixmapFromIconStrip(_list_manager_icons,3)
  349.                         SetGadgetPixmap btn_down,pix,GADGETPIXMAP_ICON|GADGETPIXMAP_NOTEXT
  350.                         pix=PixmapFromIconStrip(_list_manager_icons,4)
  351.                         SetGadgetPixmap btn_clear,pix,GADGETPIXMAP_ICON|GADGETPIXMAP_NOTEXT
  352.                        
  353.                         If btn_addDir
  354.                                 pix=PixmapFromIconStrip(_list_manager_icons,5)
  355.                                 SetGadgetPixmap btn_addDir,pix,GADGETPIXMAP_ICON|GADGETPIXMAP_NOTEXT
  356.                         End If
  357.                 End If
  358.  
  359.         End Method
  360.        
  361.         Method DisableIcons()
  362.                 Local pix:TPixmap
  363.                 If _list_manager_icons_disabled<>Null
  364.                         pix=PixmapFromIconStrip(_list_manager_icons_disabled,0)
  365.                         SetGadgetPixmap btn_add,pix,GADGETPIXMAP_ICON|GADGETPIXMAP_NOTEXT
  366.                         pix=PixmapFromIconStrip(_list_manager_icons_disabled,1)
  367.                         SetGadgetPixmap btn_remove,pix,GADGETPIXMAP_ICON|GADGETPIXMAP_NOTEXT
  368.                         pix=PixmapFromIconStrip(_list_manager_icons_disabled,2)
  369.                         SetGadgetPixmap btn_up,pix,GADGETPIXMAP_ICON|GADGETPIXMAP_NOTEXT
  370.                         pix=PixmapFromIconStrip(_list_manager_icons_disabled,3)
  371.                         SetGadgetPixmap btn_down,pix,GADGETPIXMAP_ICON|GADGETPIXMAP_NOTEXT
  372.                         pix=PixmapFromIconStrip(_list_manager_icons_disabled,4)
  373.                         SetGadgetPixmap btn_clear,pix,GADGETPIXMAP_ICON|GADGETPIXMAP_NOTEXT
  374.                        
  375.                         If btn_addDir
  376.                                 pix=PixmapFromIconStrip(_list_manager_icons_disabled,5)
  377.                                 SetGadgetPixmap btn_addDir,pix,GADGETPIXMAP_ICON|GADGETPIXMAP_NOTEXT
  378.                         End If
  379.                 End If
  380.                
  381.         End Method
  382.        
  383.         Method EnableAll()
  384.                 EnableGadget panel
  385.                 EnableGadget list_box
  386.                 EnableGadget btn_add
  387.                 EnableGadget btn_remove
  388.                 EnableGadget btn_up
  389.                 EnableGadget btn_down
  390.                 EnableGadget btn_clear
  391.                 If btn_adddir EnableGadget btn_addDir
  392.                 If txt_item EnableGadget txt_item;SetGadgetColor txt_item,255,255,255
  393.                 EnableIcons()
  394.         End Method
  395.        
  396.         Method DisableAll()
  397.                 DisableGadget panel
  398.                 DisableGadget list_box
  399.                 DisableGadget btn_add
  400.                 DisableGadget btn_remove
  401.                 DisableGadget btn_up
  402.                 DisableGadget btn_down
  403.                 DisableGadget btn_clear
  404.                 If btn_adddir DisableGadget btn_addDir
  405.                 If txt_item SetGadgetColor txt_item,212,208,200;DisableGadget txt_item
  406.                 DisableIcons()
  407.         End Method
  408.  
  409.        
  410.         Function eventHandler:Object(pID%, pData:Object, pContext:Object)
  411.  
  412.                 Local event:TEvent=TEvent(pData)
  413.                 Local obj:tlistManager=TlistManager(pContext)
  414.                 Local temp:String,ipos:Int,dpos:Int
  415.                 Local cotemp:Object,cttemp:String
  416.                 Local otemp:Object,ttemp:String
  417.                 Local otip:String,dtip:String
  418.  
  419.                
  420.                 If event
  421.                         If obj
  422.                                 Select event.ID
  423.                                         Case EVENT_GADGETACTION
  424.                                                 Select event.source
  425.                                                                                        
  426.                                                         Case obj.btn_add
  427.                                                                
  428.                                                         If obj.style&LIST_FILES
  429.                                                                 temp=RequestFile("Add a file",obj.reqfilter,False,obj.path)
  430.                                                                 If temp<>""
  431.                                                                         If obj.style&LIST_SHOWONLYNAME
  432.                                                                                
  433.                                                                                 AddGadgetItem obj.list_box,StripAll(temp),0,-1,temp,temp
  434.                                                                         Else
  435.                                                                                
  436.                                                                                 AddGadgetItem obj.list_box,temp,0,-1,temp,temp
  437.        
  438.                                                                         End If
  439.                                                                 End If
  440.                                                         End If
  441.                                                        
  442.                                                         If obj.style&LIST_ITEMS
  443.                                                                 SetGadgetColor obj.txt_item,255,255,255
  444.                                                                 temp=GadgetText(obj.txt_item)
  445.                                                                 If temp<>""
  446.                                                                         AddGadgetItem obj.list_box,temp,0,-1,temp,temp
  447.                                                                         SetGadgetText obj.txt_item,""
  448.                                                                         ActivateGadget OBJ.TXT_ITEM
  449.                                                                 Else
  450.                                                                         SetGadgetColor obj.txt_item,200,20,20
  451.                                                                         ActivateGadget OBJ.TXT_ITEM
  452.  
  453.                                                                 End If
  454.                                                        
  455.                                                                 If OBJ.STYLE&LIST_FORCEORDER
  456.                                                                
  457.                                                                         Local tempitems:String[]=Obj.GetItemArray()
  458.                                                                         tempItems.Sort()
  459.                                                                         ClearGadgetItems obj.list_box
  460.                                                                         obj.SetItemArray(tempItems)
  461.                                                                         tempitems=Null                         
  462.                                                                 End If
  463.                                                        
  464.                                                         End If
  465.  
  466.                                                         Return Null
  467.                                                 Case obj.btn_up
  468.                
  469.                                                 ipos=SelectedGadgetItem(obj.list_box)
  470.                                                 If ipos>-1
  471.                                                         cotemp=GadgetItemExtra(obj.list_box,ipos) ' oggetto _ ORIGINE
  472.                                                         cttemp=GadgetItemText(obj.list_box,ipos)
  473.                                                         otip=obj.list_box.itemtip(Ipos)
  474.  
  475.                                                         dpos=ipos-1
  476.                                                         If dpos>-1
  477.                                                                 otemp=GadgetItemExtra(obj.list_box,dpos) ' DESTINAZIONE
  478.                                                                 ttemp=GadgetItemText(obj.list_box,dpos)
  479.                                                                 dtip=obj.list_box.itemTip(Dpos)
  480.  
  481.                                                                 ModifyGadgetItem(obj.list_box,dpos,cttemp,0,-1,otip,cotemp)
  482.                                                                 ModifyGadgetItem(obj.list_box,ipos,ttemp,0,-1,dtip,otemp)
  483.                                                                 SelectGadgetItem obj.list_box,dpos
  484.                                                         End If
  485.                                                                                                
  486.                                                 End If
  487.                                                 Return Null
  488.                                         Case obj.btn_down
  489.                                                                 ipos=SelectedGadgetItem(obj.list_box)
  490.                                                        
  491.                                                 If ipos>-1
  492.                                                         cotemp=GadgetItemExtra(obj.list_box,ipos) ' oggetto _ ORIGINE
  493.                                                         cttemp=GadgetItemText(obj.list_box,ipos)
  494.                                                         otip=obj.list_box.itemtip(Ipos)
  495.        
  496.                                                         dpos=ipos+1
  497.                                                         If dpos>-1 And dpos<CountGadgetItems(obj.list_box)
  498.                                                                 otemp=GadgetItemExtra(obj.list_box,dpos) ' DESTINAZIONE
  499.                                                                 ttemp=GadgetItemText(obj.list_box,dpos)
  500.                                                                 dtip=obj.list_box.itemTip(Dpos)
  501.        
  502.                                                                 ModifyGadgetItem(obj.list_box,dpos,cttemp,0,-1,otip,cotemp)
  503.                                                                 ModifyGadgetItem(obj.list_box,ipos,ttemp,0,-1,dtip,otemp)
  504.                                                                 SelectGadgetItem obj.list_box,dpos
  505.                                                         End If
  506.                                                
  507.                                                 End If
  508.                                                 Return Null
  509.                        
  510.                                        
  511.                                         Case obj.btn_remove
  512.                                                 ipos=SelectedGadgetItem(obj.list_box)
  513.                                                 If ipos>-1
  514.                                                         RemoveGadgetItem obj.list_box,ipos
  515.                                                 End If
  516.                                                 Return Null
  517.                                        
  518.                                         Case obj.btn_clear
  519.                                                 If CountGadgetItems(obj.list_box)>0
  520.                                                         Local Con:Int=Confirm("Clear everything ?",True)
  521.                                                         If con=True ClearGadgetItems obj.list_box
  522.                                                 End If
  523.                                                 Return Null
  524.                                        
  525.                                         Case obj.btn_adddir
  526.                                                
  527.                                                 If obj.style&LIST_FILES
  528.                                                         temp=RequestDir("Select a folder to scan...",obj.path)
  529.                                                         tfiles.clear()
  530.                                                         obj.DisableAll()
  531.                                                         ScanDir(obj,temp)
  532.                                                         If tfiles.lista.count()>10000
  533.                                                                 Notify "Warning!!! There are "+tfiles.lista.count()+" files~n to add to the list!"
  534.                                                         End If
  535.                                                         For Local ss:tfiles=EachIn tfiles.lista
  536.                                                                 If obj.style&LIST_SHOWONLYNAME
  537.                                                                         AddGadgetItem obj.list_box,StripAll(ss.file),0,-1,ss.file,ss.file
  538.                                                                 Else
  539.                                                                         AddGadgetItem obj.list_box,ss.file,0,-1,ss.file,ss.file
  540.                                                                 End If
  541.                                                         Next
  542.                                                         obj.EnableAll()
  543.                                                 End If
  544.                                                 Return Null
  545.                                         End Select
  546.         Rem            
  547.                 Case EVENT_GADGETLOSTFOCUS
  548.                 '               Print "Lost Focus..."
  549.                        
  550.                                 If event.source=obj.txt_item And obj.style=LIST_ITEMS
  551.                 '                       Print "ADD A NEW ITEM"         
  552.                                                                 temp=GadgetText(obj.txt_item)
  553.                                                                 If temp<>""
  554.                                                                         AddGadgetItem obj.list_box,temp,0,-1,temp,temp
  555.                                                                 End If
  556.                                                                 SetGadgetText obj.txt_item,""
  557.                                                                 DisableGadget obj.btn_Add
  558.                                                                 ActivateGadget obj.txt_item
  559.                                 End If                                 
  560.                                
  561.         End Rem
  562.                                 End Select
  563.                         End If
  564.                 End If
  565.        
  566.        
  567.                 Return pdata
  568.  
  569.         EndFunction
  570.  
  571.        
  572.  
  573.        
  574. End Type
  575.  
  576. Type tfiles
  577.  
  578.         Global lista:TList=New TList
  579.  
  580.         Field file:String
  581.        
  582.         Function add:tfiles(_name$)
  583.                 If _name="" Return Null
  584.                
  585.                 Local cc:tfiles=New tfiles
  586.                 cc.file=_name
  587.                 lista.addlast cc
  588.                 Return cc              
  589.         End Function
  590.        
  591.         Function Clear()
  592.                 ClearList lista
  593.         End Function
  594.        
  595. End Type
  596.  
  597. Function ScanDir:Int(obj:TlistManager,path:String,recursive:Int=True,lvl:Int=0)
  598. Local counter:Int,mydir:Int,file$
  599. Local filename$,lastpath:String,lst:String
  600. If path="" Then path=CurrentDir()
  601. If Right(path,1)<>"" Then path=path+""
  602.  
  603. mydir=ReadDir(path)
  604. counter=0
  605. Repeat
  606.         file$=NextFile(mydir)
  607.         If file$="" Then Exit
  608.                 filename$=path$+file$
  609.                 If FileType(filename)=1
  610.                
  611.                         If obj.filter<>""      
  612.                                 For Local fitem:String=EachIn obj.filter_items
  613.  
  614.                                         If ExtractExt(Lower(filename))=Lower(fitem)
  615.                                                 tfiles.add(filename)
  616.                                                 counter:+1
  617.                                         End If
  618.                                 Next
  619.                        
  620.                         Else
  621.  
  622.                                 tfiles.add(filename)
  623.                                 counter:+1
  624.                         End If
  625.                 Else
  626.                        
  627.                         If recursive=True
  628.                                 If file$<>"." And file$<>".."
  629.                                         If FileType(filename$) = 2
  630.                                                 lst=lPath(filename)
  631.                                                 lvl=lvl+1
  632.                                                 scandir(obj,filename$ , True , lvl)
  633.                                         End If
  634.                                 End If
  635.                         End If
  636.                 End If
  637.        
  638.         Forever
  639.        
  640.         CloseDir mydir
  641.         Return counter
  642.                                                                
  643. End Function
  644.  
  645. Function lPath:String(file:String)
  646.         Local fi:String = file'ExtractDir(file)
  647.         Local lo:Int
  648.         For lo = Len(fi) To 1 Step - 1
  649.                 If Mid(fi , lo , 1) = "/" Or Mid(fi,lo,1)="" Exit
  650.         Next
  651.         Return Mid(fi,lo+1,Len(fi)-lo)
  652. End Function


Comments :


degac(Posted 1+ years ago)

 15-08-2010: released a new package of extra gadgets. See the main post.


ShadowTurtle(Posted 1+ years ago)

 cool packagesvery thanks!The gadgets seems to be realy useful and should be default available @ maxguithumbs up! make more!


 

SimplePortal 2.3.6 © 2008-2014, SimplePortal