October 28, 2020, 05:53:11 AM

Author Topic: [bmx] Path Edit Gadget by JoshK [ 1+ years ago ]  (Read 1374 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bmx] Path Edit Gadget by JoshK [ 1+ years ago ]
« on: June 29, 2017, 12:28:42 AM »
Title : Path Edit Gadget
Author : JoshK
Posted : 1+ years ago

Description : Gadget for choosing file and folder paths

Code :
Code: BlitzMax
  1. SuperStrict
  2.  
  3. Import MaxGui.Drivers
  4. Import brl.retro
  5.  
  6. Local window:TGadget
  7.  
  8. window=CreateWindow("pathedit Example",40,40,320,240)
  9.  
  10. Local label:TGadget
  11. Local pathedit:TPathEdit
  12. Local x:Int=4,y:Int=4
  13.  
  14. label=CreateLabel("Pick File:",x,y,60,18,window)
  15. SetGadgetLayout label,1,0,1,0
  16. pathedit=CreatePathEdit(x+60,y,200,20,window,PATHEDIT_FILE|PATHEDIT_STRIPDIR)
  17. SetGadgetLayout pathedit,1,1,1,0
  18.  
  19.  
  20. While True
  21.         WaitEvent
  22.         Print CurrentEvent.ToString()
  23.         Select EventID()
  24.                 Case EVENT_WINDOWCLOSE
  25.                         End
  26.         End Select
  27. Wend
  28.  
  29. '-------------------------------------------------------------------
  30.  
  31. Const PATHEDIT_FILE:Int=0
  32. Const PATHEDIT_DIR:Int=1
  33. Const PATHEDIT_STRIPDIR:Int=2
  34.  
  35. Type TPathEdit Extends TProxygadget
  36.        
  37.         Field panel:TGadget
  38.         Field textfield:TGadget
  39.         Field button:TGadget
  40.         Field style:Int
  41.         Field extensions:String="All Files:*"
  42.        
  43.         Method Cleanup()
  44.                 RemoveHook(EmitEventHook,EventHook,Self)
  45.                 Super.cleanup()
  46.         EndMethod
  47.        
  48.         Function Create:TPathEdit(x:Int,y:Int,width:Int,height:Int,group:TGadget,style:Int=0)
  49.                 Local pathedit:TPathEdit
  50.                
  51.                 pathedit=New TPathEdit
  52.                
  53.                 pathedit.panel=CreatePanel(x,y,width,height,group)
  54.                 pathedit.textfield=CreateTextField(0,0,pathedit.panel.ClientWidth()-pathedit.panel.ClientHeight(),pathedit.panel.ClientHeight(),pathedit.panel)
  55.                 SetGadgetLayout pathedit.textfield,1,1,1,1
  56.                
  57.                 pathedit.style=style
  58.                
  59.                 pathedit.button=CreateButton("...",pathedit.panel.ClientWidth()-pathedit.panel.ClientHeight(),0,pathedit.panel.ClientHeight(),pathedit.panel.ClientHeight(),pathedit.panel)            
  60.                 SetGadgetLayout pathedit.button,0,1,1,1
  61.                
  62.                 pathedit.setproxy(pathedit.panel)
  63.                
  64.                 AddHook(EmitEventHook,EventHook,pathedit)
  65.                 Return pathedit
  66.         EndFunction
  67.        
  68.         Function EventHook:Object(id:Int,data:Object,context:Object)
  69.                 Local event:TEvent
  70.                 Local pathedit:TPathEdit
  71.                
  72.                 event=TEvent(data)
  73.                 If event
  74.                         pathedit=TPathEdit(context)
  75.                         If pathedit
  76.                                 Select event.id
  77.                                 Case EVENT_GADGETLOSTFOCUS
  78.                                         If event.source=pathedit.textfield
  79.                                                 EmitEvent CreateEvent(EVENT_GADGETACTION,pathedit,0,0,0,0,GadgetText(pathedit.textfield))
  80.                                                 Return Null
  81.                                         EndIf                          
  82.                                 Case EVENT_GADGETACTION
  83.                                         Select event.source
  84.                                         Case pathedit.textfield
  85.                                                 Return Null
  86.                                         Case pathedit.button
  87.                                                 Local file$
  88.                                                 If PATHEDIT_DIR & pathedit.style
  89.                                                         file=RequestDir("Select Folder",GadgetText(pathedit.textfield))
  90.                                                 Else
  91.                                                         file=RequestFile("Open File",pathedit.extensions,0,GadgetText(pathedit.textfield))
  92.                                                         If PATHEDIT_STRIPDIR & pathedit.style
  93.                                                                 file=StripDir(file)
  94.                                                         EndIf
  95.                                                 EndIf
  96.                                                 If file
  97.                                                         SetGadgetText pathedit.textfield,file
  98.                                                         EmitEvent CreateEvent(EVENT_GADGETACTION,pathedit,0,0,0,0,file)
  99.                                                 EndIf
  100.                                                 Return Null
  101.                                         EndSelect
  102.                                 EndSelect
  103.                         EndIf
  104.                 EndIf
  105.                 Return data
  106.         EndFunction
  107.        
  108. EndType
  109.  
  110. Rem
  111. bbdoc:
  112. EndRem
  113. Function CreatePathEdit:TPathEdit(x:Int,y:Int,width:Int,height:Int,group:TGadget,flags:Int=0)
  114.         Return Tpathedit.Create(x,y,width,height,group,flags)
  115. EndFunction
  116.  
  117. Rem
  118. bbdoc:
  119. EndRem
  120. Function SetPathEditExtensions(pathedit:TPathEdit,extensions:String)
  121.         pathedit.extensions=extensions
  122. EndFunction


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal