filedlgg.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name: wx/generic/filedlgg.h
  3. // Purpose: wxGenericFileDialog
  4. // Author: Robert Roebling
  5. // Modified by:
  6. // Created: 8/17/99
  7. // Copyright: (c) Robert Roebling
  8. // Licence: wxWindows licence
  9. /////////////////////////////////////////////////////////////////////////////
  10. #ifndef _WX_FILEDLGG_H_
  11. #define _WX_FILEDLGG_H_
  12. #include "wx/listctrl.h"
  13. #include "wx/datetime.h"
  14. #include "wx/filefn.h"
  15. #include "wx/artprov.h"
  16. #include "wx/filedlg.h"
  17. #include "wx/generic/filectrlg.h"
  18. //-----------------------------------------------------------------------------
  19. // classes
  20. //-----------------------------------------------------------------------------
  21. class WXDLLIMPEXP_FWD_CORE wxBitmapButton;
  22. class WXDLLIMPEXP_FWD_CORE wxGenericFileCtrl;
  23. class WXDLLIMPEXP_FWD_CORE wxGenericFileDialog;
  24. class WXDLLIMPEXP_FWD_CORE wxFileCtrlEvent;
  25. //-------------------------------------------------------------------------
  26. // wxGenericFileDialog
  27. //-------------------------------------------------------------------------
  28. class WXDLLIMPEXP_CORE wxGenericFileDialog: public wxFileDialogBase
  29. {
  30. public:
  31. wxGenericFileDialog() : wxFileDialogBase() { Init(); }
  32. wxGenericFileDialog(wxWindow *parent,
  33. const wxString& message = wxFileSelectorPromptStr,
  34. const wxString& defaultDir = wxEmptyString,
  35. const wxString& defaultFile = wxEmptyString,
  36. const wxString& wildCard = wxFileSelectorDefaultWildcardStr,
  37. long style = wxFD_DEFAULT_STYLE,
  38. const wxPoint& pos = wxDefaultPosition,
  39. const wxSize& sz = wxDefaultSize,
  40. const wxString& name = wxFileDialogNameStr,
  41. bool bypassGenericImpl = false );
  42. bool Create( wxWindow *parent,
  43. const wxString& message = wxFileSelectorPromptStr,
  44. const wxString& defaultDir = wxEmptyString,
  45. const wxString& defaultFile = wxEmptyString,
  46. const wxString& wildCard = wxFileSelectorDefaultWildcardStr,
  47. long style = wxFD_DEFAULT_STYLE,
  48. const wxPoint& pos = wxDefaultPosition,
  49. const wxSize& sz = wxDefaultSize,
  50. const wxString& name = wxFileDialogNameStr,
  51. bool bypassGenericImpl = false );
  52. virtual ~wxGenericFileDialog();
  53. virtual void SetDirectory(const wxString& dir)
  54. { m_filectrl->SetDirectory(dir); }
  55. virtual void SetFilename(const wxString& name)
  56. { m_filectrl->SetFilename(name); }
  57. virtual void SetMessage(const wxString& message) { SetTitle(message); }
  58. virtual void SetPath(const wxString& path)
  59. { m_filectrl->SetPath(path); }
  60. virtual void SetFilterIndex(int filterIndex)
  61. { m_filectrl->SetFilterIndex(filterIndex); }
  62. virtual void SetWildcard(const wxString& wildCard)
  63. { m_filectrl->SetWildcard(wildCard); }
  64. virtual wxString GetPath() const
  65. { return m_filectrl->GetPath(); }
  66. virtual void GetPaths(wxArrayString& paths) const
  67. { m_filectrl->GetPaths(paths); }
  68. virtual wxString GetDirectory() const
  69. { return m_filectrl->GetDirectory(); }
  70. virtual wxString GetFilename() const
  71. { return m_filectrl->GetFilename(); }
  72. virtual void GetFilenames(wxArrayString& files) const
  73. { m_filectrl->GetFilenames(files); }
  74. virtual wxString GetWildcard() const
  75. { return m_filectrl->GetWildcard(); }
  76. virtual int GetFilterIndex() const
  77. { return m_filectrl->GetFilterIndex(); }
  78. virtual bool SupportsExtraControl() const { return true; }
  79. // implementation only from now on
  80. // -------------------------------
  81. virtual int ShowModal();
  82. virtual bool Show( bool show = true );
  83. void OnList( wxCommandEvent &event );
  84. void OnReport( wxCommandEvent &event );
  85. void OnUp( wxCommandEvent &event );
  86. void OnHome( wxCommandEvent &event );
  87. void OnOk( wxCommandEvent &event );
  88. void OnNew( wxCommandEvent &event );
  89. void OnFileActivated( wxFileCtrlEvent &event);
  90. private:
  91. // if true, don't use this implementation at all
  92. bool m_bypassGenericImpl;
  93. protected:
  94. // update the state of m_upDirButton and m_newDirButton depending on the
  95. // currently selected directory
  96. void OnUpdateButtonsUI(wxUpdateUIEvent& event);
  97. wxString m_filterExtension;
  98. wxGenericFileCtrl *m_filectrl;
  99. wxBitmapButton *m_upDirButton;
  100. wxBitmapButton *m_newDirButton;
  101. private:
  102. void Init();
  103. wxBitmapButton* AddBitmapButton( wxWindowID winId, const wxArtID& artId,
  104. const wxString& tip, wxSizer *sizer );
  105. DECLARE_DYNAMIC_CLASS(wxGenericFileDialog)
  106. DECLARE_EVENT_TABLE()
  107. // these variables are preserved between wxGenericFileDialog calls
  108. static long ms_lastViewStyle; // list or report?
  109. static bool ms_lastShowHidden; // did we show hidden files?
  110. };
  111. #ifdef wxHAS_GENERIC_FILEDIALOG
  112. class WXDLLIMPEXP_CORE wxFileDialog: public wxGenericFileDialog
  113. {
  114. public:
  115. wxFileDialog() {}
  116. wxFileDialog(wxWindow *parent,
  117. const wxString& message = wxFileSelectorPromptStr,
  118. const wxString& defaultDir = wxEmptyString,
  119. const wxString& defaultFile = wxEmptyString,
  120. const wxString& wildCard = wxFileSelectorDefaultWildcardStr,
  121. long style = 0,
  122. const wxPoint& pos = wxDefaultPosition,
  123. const wxSize& size = wxDefaultSize)
  124. :wxGenericFileDialog(parent, message,
  125. defaultDir, defaultFile, wildCard,
  126. style,
  127. pos, size)
  128. {
  129. }
  130. private:
  131. DECLARE_DYNAMIC_CLASS(wxFileDialog)
  132. };
  133. #endif // wxHAS_GENERIC_FILEDIALOG
  134. #endif // _WX_FILEDLGG_H_