#pragma hdrstop
#endif
+#if wxUSE_FILEDLG
+
#ifndef __UNIX__
#error wxFileDialog currently only supports unix
#endif
+#include "wx/checkbox.h"
+#include "wx/textctrl.h"
+#include "wx/choice.h"
+#include "wx/checkbox.h"
+#include "wx/stattext.h"
#include "wx/filedlg.h"
#include "wx/debug.h"
#include "wx/log.h"
#include "wx/intl.h"
+#include "wx/listctrl.h"
#include "wx/msgdlg.h"
#include "wx/sizer.h"
#include "wx/bmpbuttn.h"
#include "wx/generic/deffile.xpm"
#include "wx/generic/exefile.xpm"
+//-----------------------------------------------------------------------------
+// wxFileData
+//-----------------------------------------------------------------------------
+
+class wxFileData : public wxObject
+{
+private:
+ wxString m_name;
+ wxString m_fileName;
+ long m_size;
+ int m_hour;
+ int m_minute;
+ int m_year;
+ int m_month;
+ int m_day;
+ wxString m_permissions;
+ bool m_isDir;
+ bool m_isLink;
+ bool m_isExe;
+
+public:
+ wxFileData() { }
+ wxFileData( const wxString &name, const wxString &fname );
+ wxString GetName() const;
+ wxString GetFullName() const;
+ wxString GetHint() const;
+ wxString GetEntry( int num );
+ bool IsDir();
+ bool IsLink();
+ bool IsExe();
+ long GetSize();
+ void MakeItem( wxListItem &item );
+ void SetNewName( const wxString &name, const wxString &fname );
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxFileData);
+};
+
+//-----------------------------------------------------------------------------
+// wxFileCtrl
+//-----------------------------------------------------------------------------
+
+class wxFileCtrl : public wxListCtrl
+{
+private:
+ wxString m_dirName;
+ bool m_showHidden;
+ wxString m_wild;
+
+public:
+ wxFileCtrl();
+ wxFileCtrl( wxWindow *win,
+ wxWindowID id,
+ const wxString &dirName,
+ const wxString &wild,
+ const wxPoint &pos = wxDefaultPosition,
+ const wxSize &size = wxDefaultSize,
+ long style = wxLC_LIST,
+ const wxValidator &validator = wxDefaultValidator,
+ const wxString &name = wxT("filelist") );
+ void ChangeToListMode();
+ void ChangeToReportMode();
+ void ChangeToIconMode();
+ void ShowHidden( bool show = TRUE );
+ long Add( wxFileData *fd, wxListItem &item );
+ void Update();
+ virtual void StatusbarText( wxChar *WXUNUSED(text) ) {};
+ void MakeDir();
+ void GoToParentDir();
+ void GoToHomeDir();
+ void GoToDir( const wxString &dir );
+ void SetWild( const wxString &wild );
+ void GetDir( wxString &dir );
+ void OnListDeleteItem( wxListEvent &event );
+ void OnListDeleteAllItems( wxListEvent &event );
+ void OnListEndLabelEdit( wxListEvent &event );
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxFileCtrl);
+ DECLARE_EVENT_TABLE()
+};
+
// ----------------------------------------------------------------------------
// private classes - icons list management
// ----------------------------------------------------------------------------
f = wxFindNextFile();
}
- res = m_dirName + wxT("/") + m_wild;
- f = wxFindFirstFile( res.GetData(), wxFILE );
- while (!f.IsEmpty())
+ // Tokenize the wildcard string, so we can handle more than 1
+ // search pattern in a wildcard.
+ wxStringTokenizer tokenWild( m_wild, ";" );
+ while ( tokenWild.HasMoreTokens() )
{
- res = wxFileNameFromPath( f );
- fd = new wxFileData( res, f );
- wxString s = fd->GetName();
- if (m_showHidden || (s[0u] != wxT('.')))
+ res = m_dirName + wxT("/") + tokenWild.GetNextToken();
+ f = wxFindFirstFile( res.GetData(), wxFILE );
+ while (!f.IsEmpty())
{
- Add( fd, item );
- item.m_itemId++;
+ res = wxFileNameFromPath( f );
+ fd = new wxFileData( res, f );
+ wxString s = fd->GetName();
+ if (m_showHidden || (s[0u] != wxT('.')))
+ {
+ Add( fd, item );
+ item.m_itemId++;
+ }
+ f = wxFindNextFile();
}
- f = wxFindNextFile();
}
SortItems( ListCompare, 0 );
SetPath( filename );
// change to the directory where the user went if asked
- if ( GetWindowStyle() & wxCHANGE_DIR )
+ if ( m_dialogStyle & wxCHANGE_DIR )
{
wxString cwd;
wxSplitPath(filename, &cwd, NULL, NULL);
};
IMPLEMENT_DYNAMIC_CLASS(wxFileDialogGenericModule, wxModule)
+
+#endif // wxUSE_FILEDLG