X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1044a386f0521b9b805b142547783acb96d1a406..ba8c1601448fa16d64c4e75a095f1cb037909c5b:/include/wx/generic/dirdlgg.h diff --git a/include/wx/generic/dirdlgg.h b/include/wx/generic/dirdlgg.h index 74ac59feb0..f3377ed0cf 100644 --- a/include/wx/generic/dirdlgg.h +++ b/include/wx/generic/dirdlgg.h @@ -1,176 +1,88 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: dirdlgg.h -// Purpose: wxDirDialog -// Author: Harm van der Heijden and Robert Roebling +// Name: wx/generic/dirdlgg.h +// Purpose: wxGenericDirCtrl class +// Builds on wxDirCtrl class written by Robert Roebling for the +// wxFile application, modified by Harm van der Heijden. +// Further modified for Windows. +// Author: Robert Roebling, Harm van der Heijden, Julian Smart et al // Modified by: -// Created: 12/12/98 -// Copyright: (c) Harm van der Heijden and Robert Roebling +// Created: 21/3/2000 // RCS-ID: $Id$ -// Licence: wxWindows licence -// -// Notes: wxDirDialog class written by Harm van der Heijden, -// uses wxDirCtrl class written by Robert Roebling for the -// wxFile application, modified by Harm van der Heijden -// -// Description: This generic dirdialog implementation defines three classes: -// 1) wxDirItemData(public wxTreeItemData) stores pathname and -// displayed name for each item in the directory tree -// 2) wxDirCtrl(public wxTreeCtrl) is a tree widget that -// displays a directory tree. It is possible to define sections -// for fast access to parts of the file system (such as the -// user's homedir, /usr/local, /tmp ...etc), similar to -// Win95 Explorer's shortcuts to 'My Computer', 'Desktop', etc. -// 3) wxDirDialog is the dialog box itself. The user can choose -// a directory by navigating the tree, or by typing a dir -// in an inputbox. The inputbox displays paths selected in the -// tree. It is possible to create new directories. The user -// will automatically be prompted for dir creation if he -// enters a non-existing dir. -// -// TODO/BUGS: - standard sections only have reasonable defaults for Unix -// (but others are easily added in wxDirCtrl::SetupSections) -// - No direct support for "show hidden" toggle. Partly due -// to laziness on my part and partly because -// wxFindFirst/NextFile never seems to find hidden dirs -// anyway. -// - No automatic update of the tree (branch) after directory -// creation. -// - I call wxBeginBusyCursor while expanding items (creating -// a new branch might take a few seconds, especially if a -// CDROM drive or something is involved) but that doesn't -// seem to do anything. Need to look into that. -// - Am still looking for an efficient way to delete wxTreeCtrl -// branches. DeleteChildren has disappeared and -// CollapseAndReset( parent ) deletes the parent as well. -// - The dialog window layout is done using wxConstraints. It -// works, but it's not as simple as I'd like it to be (see -// comments in wxDirDialog::doSize) -// +// Copyright: (c) Robert Roebling, Harm van der Heijden, Julian Smart +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_DIRDLGG_H_ #define _WX_DIRDLGG_H_ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "dirdlgg.h" #endif -#include "wx/defs.h" +class WXDLLEXPORT wxGenericDirCtrl; +class WXDLLEXPORT wxTextCtrl; +class WXDLLEXPORT wxTreeEvent; -#if wxUSE_DIRDLG +// we may be included directly as well as from wx/dirdlg.h (FIXME) +WXDLLEXPORT_DATA(extern const wxChar*) wxDirDialogNameStr; +WXDLLEXPORT_DATA(extern const wxChar*) wxDirSelectorPromptStr; +#ifndef wxDD_DEFAULT_STYLE + #define wxDD_DEFAULT_STYLE \ + (wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxDD_NEW_DIR_BUTTON) +#endif #include "wx/dialog.h" -#include "wx/checkbox.h" -#include "wx/treectrl.h" //----------------------------------------------------------------------------- -// data +// wxGenericDirDialog //----------------------------------------------------------------------------- -WXDLLEXPORT_DATA(extern const wxChar*) wxFileSelectorPromptStr; +class WXDLLEXPORT wxGenericDirDialog : public wxDialog +{ +public: + wxGenericDirDialog() : wxDialog() { } -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- + wxGenericDirDialog(wxWindow* parent, + const wxString& title = wxDirSelectorPromptStr, + const wxString& defaultPath = wxEmptyString, + long style = wxDD_DEFAULT_STYLE, + const wxPoint& pos = wxDefaultPosition, + const wxSize& sz = wxSize(450, 550), + const wxString& name = wxDirDialogNameStr); -class wxDirItemData; -class wxDirCtrl; -class wxDirDialog; + //// Accessors + void SetMessage(const wxString& message) { m_message = message; } + void SetPath(const wxString& path); + void SetStyle(long style) { m_dialogStyle = style; } -//----------------------------------------------------------------------------- -// wxDirItemData -//----------------------------------------------------------------------------- + wxString GetMessage() const { return m_message; } + wxString GetPath() const; + long GetStyle() const { return m_dialogStyle; } -class WXDLLEXPORT wxDirItemData : public wxTreeItemData -{ -public: - wxDirItemData(wxString& path, wxString& name); - ~wxDirItemData(); - bool HasSubDirs(); - void SetNewDirName( wxString path ); - wxString m_path, m_name; - bool m_isHidden; - bool m_hasSubDirs; -}; + //// Overrides + virtual int ShowModal(); -//----------------------------------------------------------------------------- -// wxDirCtrl -//----------------------------------------------------------------------------- + // this one is specific to wxGenericDirDialog + wxTextCtrl* GetInputCtrl() const { return m_input; } -class WXDLLEXPORT wxDirCtrl: public wxTreeCtrl -{ -public: - bool m_showHidden; - wxTreeItemId m_rootId; - - wxDirCtrl(); - wxDirCtrl(wxWindow *parent, const wxWindowID id = -1, - const wxString &dir = wxDirDialogDefaultFolderStr, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - const long style = wxTR_HAS_BUTTONS, - const wxString& name = wxTreeCtrlNameStr ); - void ShowHidden( const bool yesno ); - void OnExpandItem(wxTreeEvent &event ); - void OnCollapseItem(wxTreeEvent &event ); - void OnBeginEditItem(wxTreeEvent &event ); - void OnEndEditItem(wxTreeEvent &event ); - protected: - void CreateItems(const wxTreeItemId &parent); - void SetupSections(); - wxArrayString m_paths, m_names; - -private: - DECLARE_EVENT_TABLE() - DECLARE_DYNAMIC_CLASS(wxDirCtrl) -}; - -//----------------------------------------------------------------------------- -// wxDirDialog -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxDirDialog: public wxDialog -{ -public: - wxDirDialog(wxWindow *parent, - const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultPath = wxEmptyString, - long style = 0, const wxPoint& pos = wxDefaultPosition); - inline void SetMessage(const wxString& message) { m_message = message; } - inline void SetPath(const wxString& path) { m_path = path; } - inline void SetStyle(long style) { m_dialogStyle = style; } - - inline wxString GetMessage() const { return m_message; } - inline wxString GetPath() const { return m_path; } - inline long GetStyle() const { return m_dialogStyle; } - - int ShowModal(); - - void OnTreeSelected( wxTreeEvent &event ); - void OnTreeKeyDown( wxTreeEvent &event ); + //// Event handlers + void OnCloseWindow(wxCloseEvent& event); void OnOK(wxCommandEvent& event); - void OnCancel(wxCommandEvent& event); + void OnTreeSelected(wxTreeEvent &event); + void OnTreeKeyDown(wxTreeEvent &event); void OnNew(wxCommandEvent& event); - // void OnCheck(wxCommandEvent& event); + void OnGoHome(wxCommandEvent& event); + void OnShowHidden(wxCommandEvent& event); + + wxString m_message; + long m_dialogStyle; + wxString m_path; + wxGenericDirCtrl* m_dirCtrl; + wxTextCtrl* m_input; -protected: - // implementation - wxString m_message; - long m_dialogStyle; - wxString m_path; - wxDirCtrl *m_dir; - wxTextCtrl *m_input; - wxCheckBox *m_check; // not yet used - wxButton *m_ok, *m_cancel, *m_new; - -private: DECLARE_EVENT_TABLE() - DECLARE_DYNAMIC_CLASS(wxDirDialog) + DECLARE_DYNAMIC_CLASS(wxGenericDirDialog) }; -#endif - -#endif - // _WX_DIRDLGG_H_ - +#endif // _WX_DIRDLGG_H_