diff options
Diffstat (limited to 'indra/newview/lldirpicker.cpp')
| -rw-r--r-- | indra/newview/lldirpicker.cpp | 53 | 
1 files changed, 36 insertions, 17 deletions
diff --git a/indra/newview/lldirpicker.cpp b/indra/newview/lldirpicker.cpp index e967ff3df2..fa8acac2ce 100644 --- a/indra/newview/lldirpicker.cpp +++ b/indra/newview/lldirpicker.cpp @@ -37,10 +37,15 @@  #include "llviewercontrol.h"  #include "llwin32headers.h" -#if LL_LINUX || LL_DARWIN +#if LL_LINUX || LL_DARWIN || __FreeBSD__  # include "llfilepicker.h"  #endif +#ifdef LL_FLTK +  #include "FL/Fl.H" +  #include "FL/Fl_Native_File_Chooser.H" +#endif +  #if LL_WINDOWS  #include <shlobj.h>  #endif @@ -208,26 +213,34 @@ std::string LLDirPicker::getDirName()      return mFilePicker->getFirstFile();  } -#elif LL_LINUX +#elif LL_LINUX || __FreeBSD__  LLDirPicker::LLDirPicker() :      mFileName(NULL),      mLocked(false)  { +#ifndef LL_FLTK      mFilePicker = new LLFilePicker(); +#endif      reset();  }  LLDirPicker::~LLDirPicker()  { +#ifndef LL_FLTK      delete mFilePicker; +#endif  }  void LLDirPicker::reset()  { +#ifndef LL_FLTK      if (mFilePicker)          mFilePicker->reset(); +#else +    mDir = ""; +#endif  }  bool LLDirPicker::getDir(std::string* filename, bool blocking) @@ -240,33 +253,39 @@ bool LLDirPicker::getDir(std::string* filename, bool blocking)          return false;      } -#if !LL_MESA_HEADLESS - -    if (mFilePicker) +#ifdef LL_FLTK +    gViewerWindow->getWindow()->beforeDialog(); +    Fl_Native_File_Chooser flDlg; +    flDlg.title(LLTrans::getString("choose_the_directory").c_str()); +    flDlg.type(Fl_Native_File_Chooser::BROWSE_DIRECTORY ); +    int res = flDlg.show(); +    gViewerWindow->getWindow()->afterDialog(); +    if( res == 0 )      { -        GtkWindow* picker = mFilePicker->buildFilePicker(false, true, -                                 "dirpicker"); - -        if (picker) -        { -           gtk_window_set_title(GTK_WINDOW(picker), LLTrans::getString("choose_the_directory").c_str()); -           gtk_widget_show_all(GTK_WIDGET(picker)); -           gtk_main(); -           return (!mFilePicker->getFirstFile().empty()); -        } +        char const *pDir = flDlg.filename(0); +        if( pDir ) +            mDir = pDir;      } -#endif // !LL_MESA_HEADLESS - +    else if( res == -1 ) +    { +        LL_WARNS() << "FLTK failed: " <<  flDlg.errmsg() << LL_ENDL; +    } +    return !mDir.empty(); +#endif      return false;  }  std::string LLDirPicker::getDirName()  { +#ifndef LL_FLTK      if (mFilePicker)      {          return mFilePicker->getFirstFile();      }      return ""; +#else +    return mDir; +#endif  }  #else // not implemented  | 
