requesters_linux.cpp 1000 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include "requesters.h"
  2. #include <limits.h>
  3. bbString bbRequesters::RequestFile( bbString title,bbString exts,bbBool save,bbString path ){
  4. bbString cmd=BB_T("zenity --title=\"")+title+BB_T("\" --file-selection");
  5. if( save ) cmd+=" --save";
  6. FILE *f=popen( cmd.c_str(),"r" );
  7. if( !f ) return "";
  8. char buf[PATH_MAX];
  9. int n=fread( buf,1,PATH_MAX,f );
  10. pclose( f );
  11. if( n<0 || n>PATH_MAX ) return "";
  12. while( n && buf[n-1]<=32 ) --n;
  13. return bbString::fromCString( buf,n );
  14. }
  15. bbString bbRequesters::RequestDir( bbString title,bbString dir ){
  16. bbString cmd=BB_T("zenity --title=\"")+title+BB_T("\" --file-selection --directory");
  17. FILE *f=popen( cmd.c_str(),"r" );
  18. if( !f ) return "";
  19. char buf[PATH_MAX];
  20. int n=fread( buf,1,PATH_MAX,f );
  21. pclose( f );
  22. if( n<0 || n>PATH_MAX ) return "";
  23. while( n && buf[n-1]<=32 ) --n;
  24. return bbString::fromCString( buf,n );
  25. }
  26. void bbRequesters::OpenUrl( bbString url ){
  27. system( ( bbString( "xdg-open \"" )+url+"\"" ).c_str() );
  28. }