1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/dirdlg.h
3 // Purpose:     wxDirDialog base class
4 // Author:      Robert Roebling
5 // Modified by:
6 // Created:
7 // Copyright:   (c) Robert Roebling
8 // RCS-ID:      $Id: dirdlg.h 44027 2006-12-21 19:26:48Z VZ $
9 // Licence:     wxWindows Licence
10 /////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef _WX_DIRDLG_H_BASE_
13 #define _WX_DIRDLG_H_BASE_
14 
15 #if wxUSE_DIRDLG
16 
17 #include "wx/dialog.h"
18 
19 // ----------------------------------------------------------------------------
20 // constants
21 // ----------------------------------------------------------------------------
22 
23 extern WXDLLEXPORT_DATA(const wxChar) wxDirDialogNameStr[];
24 extern WXDLLEXPORT_DATA(const wxChar) wxDirDialogDefaultFolderStr[];
25 extern WXDLLEXPORT_DATA(const wxChar) wxDirSelectorPromptStr[];
26 
27 #define wxDD_CHANGE_DIR         0x0100
28 #define wxDD_DIR_MUST_EXIST     0x0200
29 
30 // deprecated, on by default now, use wxDD_DIR_MUST_EXIST to disable it
31 #define wxDD_NEW_DIR_BUTTON     0
32 
33 #ifdef __WXWINCE__
34     #define wxDD_DEFAULT_STYLE      wxDEFAULT_DIALOG_STYLE
35 #else
36     #define wxDD_DEFAULT_STYLE      (wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
37 #endif
38 
39 //-------------------------------------------------------------------------
40 // wxDirDialogBase
41 //-------------------------------------------------------------------------
42 
43 class WXDLLEXPORT wxDirDialogBase : public wxDialog
44 {
45 public:
wxDirDialogBase()46     wxDirDialogBase() {}
47     wxDirDialogBase(wxWindow *parent,
48                     const wxString& title = wxDirSelectorPromptStr,
49                     const wxString& defaultPath = wxEmptyString,
50                     long style = wxDD_DEFAULT_STYLE,
51                     const wxPoint& pos = wxDefaultPosition,
52                     const wxSize& sz = wxDefaultSize,
53                     const wxString& name = wxDirDialogNameStr)
54     {
55         Create(parent, title, defaultPath, style, pos, sz, name);
56     }
57 
~wxDirDialogBase()58     virtual ~wxDirDialogBase() {}
59 
60 
61     bool Create(wxWindow *parent,
62                 const wxString& title = wxDirSelectorPromptStr,
63                 const wxString& defaultPath = wxEmptyString,
64                 long style = wxDD_DEFAULT_STYLE,
65                 const wxPoint& pos = wxDefaultPosition,
66                 const wxSize& sz = wxDefaultSize,
67                 const wxString& name = wxDirDialogNameStr)
68     {
69         if (!wxDialog::Create(parent, wxID_ANY, title, pos, sz, style, name))
70             return false;
71         m_path = defaultPath;
72         m_message = title;
73         return true;
74     }
75 
76 #if WXWIN_COMPATIBILITY_2_6
77 
78     wxDEPRECATED( long GetStyle() const );
79     wxDEPRECATED( void SetStyle(long style) );
80 
81 #endif  // WXWIN_COMPATIBILITY_2_6
82 
SetMessage(const wxString & message)83     virtual void SetMessage(const wxString& message) { m_message = message; }
SetPath(const wxString & path)84     virtual void SetPath(const wxString& path) { m_path = path; }
85 
GetMessage()86     virtual wxString GetMessage() const { return m_message; }
GetPath()87     virtual wxString GetPath() const { return m_path; }
88 
89 protected:
90     wxString m_message;
91     wxString m_path;
92 };
93 
94 
95 // Universal and non-port related switches with need for generic implementation
96 #if defined(__WXUNIVERSAL__)
97     #include "wx/generic/dirdlgg.h"
98     #define wxDirDialog wxGenericDirDialog
99 #elif defined(__WXMSW__) && (defined(__SALFORDC__)    || \
100                              !wxUSE_OLE               || \
101                              (defined (__GNUWIN32__) && !wxUSE_NORLANDER_HEADERS))
102     #include "wx/generic/dirdlgg.h"
103     #define wxDirDialog wxGenericDirDialog
104 #elif defined(__WXMSW__) && defined(__WXWINCE__) && !defined(__HANDHELDPC__)
105     #include "wx/generic/dirdlgg.h"     // MS PocketPC or MS Smartphone
106     #define wxDirDialog wxGenericDirDialog
107 #elif defined(__WXMSW__)
108     #include "wx/msw/dirdlg.h"  // Native MSW
109 #elif defined(__WXGTK24__)
110     #include "wx/gtk/dirdlg.h"  // Native GTK for gtk2.4
111 #elif defined(__WXGTK__)
112     #include "wx/generic/dirdlgg.h"
113     #define wxDirDialog wxGenericDirDialog
114 #elif defined(__WXMAC__)
115     #include "wx/mac/dirdlg.h"      // Native Mac
116 #elif defined(__WXCOCOA__)
117     #include "wx/cocoa/dirdlg.h"    // Native Cocoa
118 #elif defined(__WXMOTIF__) || \
119       defined(__WXX11__)   || \
120       defined(__WXMGL__)   || \
121       defined(__WXCOCOA__) || \
122       defined(__WXPM__)
123     #include "wx/generic/dirdlgg.h"     // Other ports use generic implementation
124     #define wxDirDialog wxGenericDirDialog
125 #endif
126 
127 // ----------------------------------------------------------------------------
128 // common ::wxDirSelector() function
129 // ----------------------------------------------------------------------------
130 
131 WXDLLEXPORT wxString
132 wxDirSelector(const wxString& message = wxDirSelectorPromptStr,
133               const wxString& defaultPath = wxEmptyString,
134               long style = wxDD_DEFAULT_STYLE,
135               const wxPoint& pos = wxDefaultPosition,
136               wxWindow *parent = NULL);
137 
138 #endif // wxUSE_DIRDLG
139 
140 #endif
141     // _WX_DIRDLG_H_BASE_
142