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
This commit is contained in:
@@ -119,27 +119,33 @@ public:
|
|||||||
void SetDefaultPath(const wxString& path) { m_defaultPath = path; }
|
void SetDefaultPath(const wxString& path) { m_defaultPath = path; }
|
||||||
|
|
||||||
// Get dir or filename
|
// Get dir or filename
|
||||||
wxString GetPath() const ;
|
wxString GetPath() const;
|
||||||
|
|
||||||
// Get selected filename path only (else empty string).
|
// Get selected filename path only (else empty string).
|
||||||
// I.e. don't count a directory as a selection
|
// I.e. don't count a directory as a selection
|
||||||
wxString GetFilePath() const ;
|
wxString GetFilePath() const;
|
||||||
void SetPath(const wxString& path) ;
|
void SetPath(const wxString& path);
|
||||||
|
|
||||||
|
void ShowHidden( bool show );
|
||||||
|
bool GetShowHidden() { return m_showHidden; }
|
||||||
|
|
||||||
wxString GetFilter() const { return m_filter; }
|
wxString GetFilter() const { return m_filter; }
|
||||||
void SetFilter(const wxString& filter);
|
void SetFilter(const wxString& filter);
|
||||||
|
|
||||||
int GetFilterIndex() const { return m_currentFilter; }
|
int GetFilterIndex() const { return m_currentFilter; }
|
||||||
void SetFilterIndex(int n) ;
|
void SetFilterIndex(int n);
|
||||||
|
|
||||||
wxTreeItemId GetRootId() { return m_rootId; }
|
wxTreeItemId GetRootId() { return m_rootId; }
|
||||||
|
|
||||||
wxTreeCtrl* GetTreeCtrl() const { return m_treeCtrl; }
|
wxTreeCtrl* GetTreeCtrl() const { return m_treeCtrl; }
|
||||||
wxDirFilterListCtrl* GetFilterListCtrl() const { return m_filterListCtrl; }
|
wxDirFilterListCtrl* GetFilterListCtrl() const { return m_filterListCtrl; }
|
||||||
|
|
||||||
//// Helpers
|
// Helper
|
||||||
void SetupSections();
|
void SetupSections();
|
||||||
|
|
||||||
// Parse the filter into an array of filters and an array of descriptions
|
// Parse the filter into an array of filters and an array of descriptions
|
||||||
int ParseFilter(const wxString& filterStr, wxArrayString& filters, wxArrayString& descriptions);
|
int ParseFilter(const wxString& filterStr, wxArrayString& filters, wxArrayString& descriptions);
|
||||||
|
|
||||||
// Find the child that matches the first part of 'path'.
|
// Find the child that matches the first part of 'path'.
|
||||||
// E.g. if a child path is "/usr" and 'path' is "/usr/include"
|
// E.g. if a child path is "/usr" and 'path' is "/usr/include"
|
||||||
// then the child for /usr is returned.
|
// then the child for /usr is returned.
|
||||||
@@ -148,6 +154,7 @@ public:
|
|||||||
|
|
||||||
// Resize the components of the control
|
// Resize the components of the control
|
||||||
void DoResize();
|
void DoResize();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void ExpandDir(wxTreeItemId parentId);
|
void ExpandDir(wxTreeItemId parentId);
|
||||||
void AddSection(const wxString& path, const wxString& name, int imageId = 0);
|
void AddSection(const wxString& path, const wxString& name, int imageId = 0);
|
||||||
|
@@ -64,6 +64,7 @@ protected:
|
|||||||
void OnTreeSelected(wxTreeEvent &event);
|
void OnTreeSelected(wxTreeEvent &event);
|
||||||
void OnTreeKeyDown(wxTreeEvent &event);
|
void OnTreeKeyDown(wxTreeEvent &event);
|
||||||
void OnNew(wxCommandEvent& event);
|
void OnNew(wxCommandEvent& event);
|
||||||
|
void OnShowHidden(wxCommandEvent& event);
|
||||||
|
|
||||||
wxString m_message;
|
wxString m_message;
|
||||||
long m_dialogStyle;
|
long m_dialogStyle;
|
||||||
|
@@ -572,6 +572,13 @@ void wxGenericDirCtrl::Init()
|
|||||||
m_filterListCtrl = NULL;
|
m_filterListCtrl = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxGenericDirCtrl::ShowHidden( bool show )
|
||||||
|
{
|
||||||
|
m_showHidden = show;
|
||||||
|
|
||||||
|
// reparse FIXME
|
||||||
|
}
|
||||||
|
|
||||||
void wxGenericDirCtrl::AddSection(const wxString& path, const wxString& name, int imageId)
|
void wxGenericDirCtrl::AddSection(const wxString& path, const wxString& name, int imageId)
|
||||||
{
|
{
|
||||||
wxDirItemData *dir_item = new wxDirItemData(path,name,TRUE);
|
wxDirItemData *dir_item = new wxDirItemData(path,name,TRUE);
|
||||||
@@ -806,7 +813,9 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId)
|
|||||||
|
|
||||||
if (d.IsOpened())
|
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
|
do
|
||||||
{
|
{
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
#ifndef WX_PRECOMP
|
#ifndef WX_PRECOMP
|
||||||
#include "wx/textctrl.h"
|
#include "wx/textctrl.h"
|
||||||
#include "wx/button.h"
|
#include "wx/button.h"
|
||||||
|
#include "wx/checkbox.h"
|
||||||
#include "wx/sizer.h"
|
#include "wx/sizer.h"
|
||||||
#include "wx/intl.h"
|
#include "wx/intl.h"
|
||||||
#include "wx/log.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_OK = 1002;
|
||||||
static const int ID_CANCEL = 1003;
|
static const int ID_CANCEL = 1003;
|
||||||
static const int ID_NEW = 1004;
|
static const int ID_NEW = 1004;
|
||||||
//static const int ID_CHECK = 1005;
|
static const int ID_SHOW_HIDDEN = 1005;
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(wxGenericDirDialog, wxDialog)
|
BEGIN_EVENT_TABLE(wxGenericDirDialog, wxDialog)
|
||||||
EVT_BUTTON (wxID_OK, wxGenericDirDialog::OnOK)
|
|
||||||
EVT_BUTTON (wxID_NEW, wxGenericDirDialog::OnNew)
|
|
||||||
EVT_CLOSE (wxGenericDirDialog::OnCloseWindow)
|
EVT_CLOSE (wxGenericDirDialog::OnCloseWindow)
|
||||||
EVT_TREE_KEY_DOWN (-1, wxGenericDirDialog::OnTreeKeyDown)
|
EVT_BUTTON (wxID_OK, wxGenericDirDialog::OnOK)
|
||||||
EVT_TREE_SEL_CHANGED (-1, wxGenericDirDialog::OnTreeSelected)
|
EVT_BUTTON (ID_NEW, wxGenericDirDialog::OnNew)
|
||||||
EVT_TEXT_ENTER (ID_TEXTCTRL, wxGenericDirDialog::OnOK)
|
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()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
wxGenericDirDialog::wxGenericDirDialog(wxWindow* parent, const wxString& title,
|
wxGenericDirDialog::wxGenericDirDialog(wxWindow* parent, const wxString& title,
|
||||||
@@ -95,16 +97,22 @@ wxGenericDirDialog::wxGenericDirDialog(wxWindow* parent, const wxString& title,
|
|||||||
|
|
||||||
// 4) Buttons
|
// 4) Buttons
|
||||||
wxSizer* buttonsizer = new wxBoxSizer( wxHORIZONTAL );
|
wxSizer* buttonsizer = new wxBoxSizer( wxHORIZONTAL );
|
||||||
|
|
||||||
|
// 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, 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"));
|
wxButton* okButton = new wxButton(this, wxID_OK, _("OK"));
|
||||||
buttonsizer->Add( okButton, 0, wxLEFT|wxRIGHT, 10 );
|
buttonsizer->Add( okButton, 0, wxLEFT|wxRIGHT, 10 );
|
||||||
wxButton* cancelButton = new wxButton(this, wxID_CANCEL, _("Cancel"));
|
wxButton* cancelButton = new wxButton(this, wxID_CANCEL, _("Cancel"));
|
||||||
buttonsizer->Add( cancelButton, 0, wxLEFT|wxRIGHT, 10 );
|
buttonsizer->Add( cancelButton, 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...") );
|
|
||||||
buttonsizer->Add( newButton, 0, wxLEFT|wxRIGHT, 10 );
|
|
||||||
|
|
||||||
topsizer->Add( buttonsizer, 0, wxALL | wxCENTER, 10 );
|
topsizer->Add( buttonsizer, 0, wxALL | wxCENTER, 10 );
|
||||||
|
|
||||||
okButton->SetDefault();
|
okButton->SetDefault();
|
||||||
@@ -197,6 +205,14 @@ void wxGenericDirDialog::OnTreeKeyDown( wxTreeEvent &WXUNUSED(event) )
|
|||||||
m_input->SetValue( data->m_path );
|
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) )
|
void wxGenericDirDialog::OnNew( wxCommandEvent& WXUNUSED(event) )
|
||||||
{
|
{
|
||||||
wxTreeItemId id = m_dirCtrl->GetTreeCtrl()->GetSelection();
|
wxTreeItemId id = m_dirCtrl->GetTreeCtrl()->GetSelection();
|
||||||
|
Reference in New Issue
Block a user