]> git.saurik.com Git - wxWidgets.git/blob - include/wx/generic/dirdlgg.h
wxTreeEvent is declared in one header, not 3 of them
[wxWidgets.git] / include / wx / generic / dirdlgg.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: dirdlgg.h
3 // Purpose: wxDirDialog
4 // Author: Harm van der Heijden and Robert Roebling
5 // Modified by:
6 // Created: 12/12/98
7 // Copyright: (c) Harm van der Heijden and Robert Roebling
8 // Licence: wxWindows licence
9 //
10 // Notes: wxDirDialog class written by Harm van der Heijden,
11 // uses wxDirCtrl class written by Robert Roebling for the
12 // wxFile application, modified by Harm van der Heijden
13 //
14 // Description: This generic dirdialog implementation defines three classes:
15 // 1) wxDirItemData(public wxTreeItemData) stores pathname and
16 // displayed name for each item in the directory tree
17 // 2) wxDirCtrl(public wxTreeCtrl) is a tree widget that
18 // displays a directory tree. It is possible to define sections
19 // for fast access to parts of the file system (such as the
20 // user's homedir, /usr/local, /tmp ...etc), similar to
21 // Win95 Explorer's shortcuts to 'My Computer', 'Desktop', etc.
22 // 3) wxDirDialog is the dialog box itself. The user can choose
23 // a directory by navigating the tree, or by typing a dir
24 // in an inputbox. The inputbox displays paths selected in the
25 // tree. It is possible to create new directories. The user
26 // will automatically be prompted for dir creation if he
27 // enters a non-existing dir.
28 //
29 // TODO/BUGS: - standard sections only have reasonable defaults for Unix
30 // (but others are easily added in wxDirCtrl::SetupSections)
31 // - No direct support for "show hidden" toggle. Partly due
32 // to laziness on my part and partly because
33 // wxFindFirst/NextFile never seems to find hidden dirs
34 // anyway.
35 // - No automatic update of the tree (branch) after directory
36 // creation.
37 // - I call wxBeginBusyCursor while expanding items (creating
38 // a new branch might take a few seconds, especially if a
39 // CDROM drive or something is involved) but that doesn't
40 // seem to do anything. Need to look into that.
41 // - Am still looking for an efficient way to delete wxTreeCtrl
42 // branches. DeleteChildren has disappeared and
43 // CollapseAndReset( parent ) deletes the parent as well.
44 // - The dialog window layout is done using wxConstraints. It
45 // works, but it's not as simple as I'd like it to be (see
46 // comments in wxDirDialog::doSize)
47 //
48 /////////////////////////////////////////////////////////////////////////////
49
50 #ifndef _WX_DIRDLGG_H_
51 #define _WX_DIRDLGG_H_
52
53 #ifdef __GNUG__
54 #pragma interface "dirdlgg.h"
55 #endif
56
57 #include "wx/defs.h"
58
59 #if wxUSE_DIRDLG
60
61 #include "wx/dialog.h"
62 #include "wx/checkbox.h"
63 #include "wx/treectrl.h"
64
65 //-----------------------------------------------------------------------------
66 // data
67 //-----------------------------------------------------------------------------
68
69 WXDLLEXPORT_DATA(extern const wxChar*) wxFileSelectorPromptStr;
70
71 //-----------------------------------------------------------------------------
72 // classes
73 //-----------------------------------------------------------------------------
74
75 class wxDirItemData;
76 class wxDirCtrl;
77 class wxDirDialog;
78
79 //-----------------------------------------------------------------------------
80 // wxDirDialog
81 //-----------------------------------------------------------------------------
82
83 class WXDLLEXPORT wxDirDialog: public wxDialog
84 {
85 DECLARE_DYNAMIC_CLASS(wxDirDialog)
86 public:
87 wxDirDialog(wxWindow *parent,
88 const wxString& message = wxFileSelectorPromptStr,
89 const wxString& defaultPath = wxEmptyString,
90 long style = 0, const wxPoint& pos = wxDefaultPosition);
91 inline void SetMessage(const wxString& message) { m_message = message; }
92 inline void SetPath(const wxString& path) { m_path = path; }
93 inline void SetStyle(long style) { m_dialogStyle = style; }
94
95 inline wxString GetMessage() const { return m_message; }
96 inline wxString GetPath() const { return m_path; }
97 inline long GetStyle() const { return m_dialogStyle; }
98
99 int ShowModal();
100
101 void OnTreeSelected( wxTreeEvent &event );
102 void OnTreeKeyDown( wxTreeEvent &event );
103 void OnSize(wxSizeEvent& event);
104 void OnOK(wxCommandEvent& event);
105 void OnCancel(wxCommandEvent& event);
106 void OnNew(wxCommandEvent& event);
107 // void OnCheck(wxCommandEvent& event);
108 DECLARE_EVENT_TABLE()
109
110 protected:
111 // implementation
112 wxString m_message;
113 long m_dialogStyle;
114 wxWindow * m_parent;
115 wxString m_path;
116 wxDirCtrl *m_dir;
117 wxTextCtrl *m_input;
118 // wxCheckBox *m_check;
119 wxButton *m_ok, *m_cancel, *m_new;
120 void doSize();
121 };
122
123 #endif
124
125 #endif
126 // _WX_DIRDLGG_H_
127