filepathfield.monkey2 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #if __DESKTOP_TARGET__
  2. Namespace mojox
  3. Class FilePathField Extends DockingView
  4. Field FilePathChanged:Void()
  5. Method New( path:String="",fileType:FileType=std.filesystem.FileType.File )
  6. _fileType=fileType
  7. _textField=New TextField( path )
  8. _textField.TextChanged+=Lambda()
  9. FilePathChanged()
  10. End
  11. _pathButton=New PushButton( "..." )
  12. _pathButton.Clicked=Lambda()
  13. New Fiber( Lambda()
  14. Local future:=New Future<String>
  15. App.Idle+=Lambda()
  16. If _fileType=FileType.Directory
  17. future.Set( requesters.RequestDir( "Select Directory",_textField.Text ) )
  18. Else
  19. future.Set( requesters.RequestFile( "Select File",_filter,False,_textField.Text ) )
  20. Endif
  21. End
  22. Local path:=future.Get()
  23. If Not path Return
  24. _textField.Text=path
  25. FilePathChanged()
  26. End )
  27. End
  28. AddView( _pathButton,"right" )
  29. ContentView=_textField
  30. MaxSize=New Vec2i( 320,0 )
  31. End
  32. Property FileFilter:String()
  33. Return _filter
  34. Setter( filter:String )
  35. _filter=filter
  36. End
  37. Property FilePath:String()
  38. Return _textField.Text
  39. Setter( path:String )
  40. _textField.Text=path
  41. End
  42. Property FileType:FileType()
  43. Return _fileType
  44. Setter( fileType:FileType )
  45. _fileType=fileType
  46. End
  47. Private
  48. Field _filter:String
  49. Field _textField:TextField
  50. Field _pathButton:PushButton
  51. Field _fileType:FileType
  52. End
  53. #endif