]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/filedlgg.cpp
reduce flicker in header window when deleting items and let space select items even...
[wxWidgets.git] / src / generic / filedlgg.cpp
index 41e6ad08d02908cebf6ce468e256952cfdf66ca7..838e152bbf76f650a25223b008e3bf3abd1d4da4 100644 (file)
 #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
 // ----------------------------------------------------------------------------
@@ -1320,3 +1410,5 @@ public:
 };
 
 IMPLEMENT_DYNAMIC_CLASS(wxFileDialogGenericModule, wxModule)
+
+#endif // wxUSE_FILEDLG