From 42dcacf02b163699d4623097c4d04980f11d9040 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Wed, 9 Jan 2002 18:00:39 +0000 Subject: [PATCH] wxDirDialog no longer shows hidden files. I don't know yet how to implement the reparsing when the user checks/unchecks the "Show hidden directories" button. And my mail is down... git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13482 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/generic/dirctrlg.h | 17 +++++++++++----- include/wx/generic/dirdlgg.h | 1 + src/generic/dirctrlg.cpp | 11 +++++++++- src/generic/dirdlgg.cpp | 38 +++++++++++++++++++++++++---------- 4 files changed, 50 insertions(+), 17 deletions(-) diff --git a/include/wx/generic/dirctrlg.h b/include/wx/generic/dirctrlg.h index e0e5c4c554..467c04f7a4 100644 --- a/include/wx/generic/dirctrlg.h +++ b/include/wx/generic/dirctrlg.h @@ -119,27 +119,33 @@ public: void SetDefaultPath(const wxString& path) { m_defaultPath = path; } // Get dir or filename - wxString GetPath() const ; + wxString GetPath() const; + // Get selected filename path only (else empty string). // I.e. don't count a directory as a selection - wxString GetFilePath() const ; - void SetPath(const wxString& path) ; + wxString GetFilePath() const; + void SetPath(const wxString& path); + + void ShowHidden( bool show ); + bool GetShowHidden() { return m_showHidden; } wxString GetFilter() const { return m_filter; } void SetFilter(const wxString& filter); int GetFilterIndex() const { return m_currentFilter; } - void SetFilterIndex(int n) ; + void SetFilterIndex(int n); wxTreeItemId GetRootId() { return m_rootId; } wxTreeCtrl* GetTreeCtrl() const { return m_treeCtrl; } wxDirFilterListCtrl* GetFilterListCtrl() const { return m_filterListCtrl; } - //// Helpers + // Helper void SetupSections(); + // Parse the filter into an array of filters and an array of descriptions int ParseFilter(const wxString& filterStr, wxArrayString& filters, wxArrayString& descriptions); + // Find the child that matches the first part of 'path'. // E.g. if a child path is "/usr" and 'path' is "/usr/include" // then the child for /usr is returned. @@ -148,6 +154,7 @@ public: // Resize the components of the control void DoResize(); + protected: void ExpandDir(wxTreeItemId parentId); void AddSection(const wxString& path, const wxString& name, int imageId = 0); diff --git a/include/wx/generic/dirdlgg.h b/include/wx/generic/dirdlgg.h index 594c889dc5..278a1c6083 100644 --- a/include/wx/generic/dirdlgg.h +++ b/include/wx/generic/dirdlgg.h @@ -64,6 +64,7 @@ protected: void OnTreeSelected(wxTreeEvent &event); void OnTreeKeyDown(wxTreeEvent &event); void OnNew(wxCommandEvent& event); + void OnShowHidden(wxCommandEvent& event); wxString m_message; long m_dialogStyle; diff --git a/src/generic/dirctrlg.cpp b/src/generic/dirctrlg.cpp index c0016cef79..2a2bba6bf7 100644 --- a/src/generic/dirctrlg.cpp +++ b/src/generic/dirctrlg.cpp @@ -572,6 +572,13 @@ void wxGenericDirCtrl::Init() m_filterListCtrl = NULL; } +void wxGenericDirCtrl::ShowHidden( bool show ) +{ + m_showHidden = show; + + // reparse FIXME +} + void wxGenericDirCtrl::AddSection(const wxString& path, const wxString& name, int imageId) { wxDirItemData *dir_item = new wxDirItemData(path,name,TRUE); @@ -806,7 +813,9 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId) if (d.IsOpened()) { - if (d.GetFirst(& eachFilename, wxEmptyString, wxDIR_DIRS | wxDIR_HIDDEN)) + int style = wxDIR_DIRS; + if (m_showHidden) style |= wxDIR_HIDDEN; + if (d.GetFirst(& eachFilename, wxEmptyString, style)) { do { diff --git a/src/generic/dirdlgg.cpp b/src/generic/dirdlgg.cpp index 880836a002..7b230c3f3c 100644 --- a/src/generic/dirdlgg.cpp +++ b/src/generic/dirdlgg.cpp @@ -28,6 +28,7 @@ #ifndef WX_PRECOMP #include "wx/textctrl.h" #include "wx/button.h" + #include "wx/checkbox.h" #include "wx/sizer.h" #include "wx/intl.h" #include "wx/log.h" @@ -47,15 +48,16 @@ static const int ID_TEXTCTRL = 1001; static const int ID_OK = 1002; static const int ID_CANCEL = 1003; static const int ID_NEW = 1004; -//static const int ID_CHECK = 1005; +static const int ID_SHOW_HIDDEN = 1005; BEGIN_EVENT_TABLE(wxGenericDirDialog, wxDialog) - EVT_BUTTON (wxID_OK, wxGenericDirDialog::OnOK) - EVT_BUTTON (wxID_NEW, wxGenericDirDialog::OnNew) EVT_CLOSE (wxGenericDirDialog::OnCloseWindow) - EVT_TREE_KEY_DOWN (-1, wxGenericDirDialog::OnTreeKeyDown) - EVT_TREE_SEL_CHANGED (-1, wxGenericDirDialog::OnTreeSelected) - EVT_TEXT_ENTER (ID_TEXTCTRL, wxGenericDirDialog::OnOK) + EVT_BUTTON (wxID_OK, wxGenericDirDialog::OnOK) + EVT_BUTTON (ID_NEW, wxGenericDirDialog::OnNew) + EVT_TREE_KEY_DOWN (-1, wxGenericDirDialog::OnTreeKeyDown) + EVT_TREE_SEL_CHANGED (-1, wxGenericDirDialog::OnTreeSelected) + EVT_TEXT_ENTER (ID_TEXTCTRL, wxGenericDirDialog::OnOK) + EVT_CHECKBOX (ID_SHOW_HIDDEN, wxGenericDirDialog::OnShowHidden) END_EVENT_TABLE() wxGenericDirDialog::wxGenericDirDialog(wxWindow* parent, const wxString& title, @@ -95,16 +97,22 @@ wxGenericDirDialog::wxGenericDirDialog(wxWindow* parent, const wxString& title, // 4) Buttons wxSizer* buttonsizer = new wxBoxSizer( wxHORIZONTAL ); - wxButton* okButton = new wxButton(this, wxID_OK, _("OK")); - buttonsizer->Add( okButton, 0, wxLEFT|wxRIGHT, 10 ); - wxButton* cancelButton = new wxButton(this, wxID_CANCEL, _("Cancel")); - buttonsizer->Add( cancelButton, 0, wxLEFT|wxRIGHT, 10 ); + + // Make the an option depending on a flag? + wxCheckBox* check = new wxCheckBox( this, ID_SHOW_HIDDEN, _("Show hidden directories") ); + buttonsizer->Add( check, 0, wxLEFT|wxRIGHT, 10 ); // I'm not convinced we need a New button, and we tend to get annoying // accidental-editing with label editing enabled. - wxButton* newButton = new wxButton( this, wxID_NEW, _("New...") ); + wxButton* newButton = new wxButton( this, ID_NEW, _("New...") ); buttonsizer->Add( newButton, 0, wxLEFT|wxRIGHT, 10 ); + // OK and Cancel button should be at the right bottom + wxButton* okButton = new wxButton(this, wxID_OK, _("OK")); + buttonsizer->Add( okButton, 0, wxLEFT|wxRIGHT, 10 ); + wxButton* cancelButton = new wxButton(this, wxID_CANCEL, _("Cancel")); + buttonsizer->Add( cancelButton, 0, wxLEFT|wxRIGHT, 10 ); + topsizer->Add( buttonsizer, 0, wxALL | wxCENTER, 10 ); okButton->SetDefault(); @@ -197,6 +205,14 @@ void wxGenericDirDialog::OnTreeKeyDown( wxTreeEvent &WXUNUSED(event) ) m_input->SetValue( data->m_path ); }; +void wxGenericDirDialog::OnShowHidden( wxCommandEvent& event ) +{ + if (!m_dirCtrl) + return; + + m_dirCtrl->ShowHidden( event.GetInt() ); +} + void wxGenericDirDialog::OnNew( wxCommandEvent& WXUNUSED(event) ) { wxTreeItemId id = m_dirCtrl->GetTreeCtrl()->GetSelection(); -- 2.45.2