select the initially specified path in the tree
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6995 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
// Created: 12/12/98
|
// Created: 12/12/98
|
||||||
// Copyright: (c) Harm van der Heijden and Robert Roebling
|
// Copyright: (c) Harm van der Heijden and Robert Roebling
|
||||||
// RCS-ID: $Id$
|
// RCS-ID: $Id$
|
||||||
// Licence: wxWindows licence
|
// Licence: wxWindows licence
|
||||||
//
|
//
|
||||||
// Notes: wxDirDialog class written by Harm van der Heijden,
|
// Notes: wxDirDialog class written by Harm van der Heijden,
|
||||||
// uses wxDirCtrl class written by Robert Roebling for the
|
// uses wxDirCtrl class written by Robert Roebling for the
|
||||||
@@ -106,11 +106,11 @@ public:
|
|||||||
|
|
||||||
wxDirCtrl();
|
wxDirCtrl();
|
||||||
wxDirCtrl(wxWindow *parent, const wxWindowID id = -1,
|
wxDirCtrl(wxWindow *parent, const wxWindowID id = -1,
|
||||||
const wxString &dir = wxDirDialogDefaultFolderStr,
|
const wxString &dir = wxDirDialogDefaultFolderStr,
|
||||||
const wxPoint& pos = wxDefaultPosition,
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
const wxSize& size = wxDefaultSize,
|
const wxSize& size = wxDefaultSize,
|
||||||
const long style = wxTR_HAS_BUTTONS,
|
const long style = wxTR_HAS_BUTTONS,
|
||||||
const wxString& name = wxTreeCtrlNameStr );
|
const wxString& name = wxTreeCtrlNameStr );
|
||||||
void ShowHidden( const bool yesno );
|
void ShowHidden( const bool yesno );
|
||||||
void OnExpandItem(wxTreeEvent &event );
|
void OnExpandItem(wxTreeEvent &event );
|
||||||
void OnCollapseItem(wxTreeEvent &event );
|
void OnCollapseItem(wxTreeEvent &event );
|
||||||
@@ -136,9 +136,9 @@ class WXDLLEXPORT wxDirDialog: public wxDialog
|
|||||||
public:
|
public:
|
||||||
wxDirDialog() {}
|
wxDirDialog() {}
|
||||||
wxDirDialog(wxWindow *parent,
|
wxDirDialog(wxWindow *parent,
|
||||||
const wxString& message = wxFileSelectorPromptStr,
|
const wxString& message = wxFileSelectorPromptStr,
|
||||||
const wxString& defaultPath = wxEmptyString,
|
const wxString& defaultPath = wxEmptyString,
|
||||||
long style = 0, const wxPoint& pos = wxDefaultPosition);
|
long style = 0, const wxPoint& pos = wxDefaultPosition);
|
||||||
inline void SetMessage(const wxString& message) { m_message = message; }
|
inline void SetMessage(const wxString& message) { m_message = message; }
|
||||||
inline void SetPath(const wxString& path) { m_path = path; }
|
inline void SetPath(const wxString& path) { m_path = path; }
|
||||||
inline void SetStyle(long style) { m_dialogStyle = style; }
|
inline void SetStyle(long style) { m_dialogStyle = style; }
|
||||||
|
@@ -38,6 +38,7 @@
|
|||||||
#include "wx/icon.h"
|
#include "wx/icon.h"
|
||||||
#include "wx/log.h"
|
#include "wx/log.h"
|
||||||
#include "wx/sizer.h"
|
#include "wx/sizer.h"
|
||||||
|
#include "wx/tokenzr.h"
|
||||||
|
|
||||||
#if wxUSE_STATLINE
|
#if wxUSE_STATLINE
|
||||||
#include "wx/statline.h"
|
#include "wx/statline.h"
|
||||||
@@ -170,18 +171,21 @@ wxDirCtrl::wxDirCtrl(void)
|
|||||||
m_showHidden = FALSE;
|
m_showHidden = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxDirCtrl::wxDirCtrl(wxWindow *parent, const wxWindowID id, const wxString &WXUNUSED(dir),
|
wxDirCtrl::wxDirCtrl(wxWindow *parent,
|
||||||
const wxPoint& pos, const wxSize& size,
|
const wxWindowID id,
|
||||||
const long style, const wxString& name )
|
const wxString &WXUNUSED(dir),
|
||||||
:
|
const wxPoint& pos,
|
||||||
wxTreeCtrl( parent, id, pos, size, style, wxDefaultValidator, name )
|
const wxSize& size,
|
||||||
|
const long style,
|
||||||
|
const wxString& name )
|
||||||
|
: wxTreeCtrl( parent, id, pos, size, style, wxDefaultValidator, name )
|
||||||
{
|
{
|
||||||
#ifndef __WXMSW__
|
#ifndef __WXMSW__
|
||||||
m_imageListNormal = new wxImageList(16, 16, TRUE);
|
m_imageListNormal = new wxImageList(16, 16, TRUE);
|
||||||
m_imageListNormal->Add(wxICON(icon1));
|
m_imageListNormal->Add(wxICON(icon1));
|
||||||
m_imageListNormal->Add(wxICON(icon2));
|
m_imageListNormal->Add(wxICON(icon2));
|
||||||
SetImageList(m_imageListNormal);
|
SetImageList(m_imageListNormal);
|
||||||
#endif
|
#endif // !MSW
|
||||||
|
|
||||||
m_showHidden = FALSE;
|
m_showHidden = FALSE;
|
||||||
m_rootId = AddRoot( _("Sections") );
|
m_rootId = AddRoot( _("Sections") );
|
||||||
@@ -223,14 +227,15 @@ void wxDirCtrl::CreateItems(const wxTreeItemId &parent)
|
|||||||
|
|
||||||
// wxASSERT(m_paths.Count() == m_names.Count()); ?
|
// wxASSERT(m_paths.Count() == m_names.Count()); ?
|
||||||
|
|
||||||
for (unsigned int i=0; i<m_paths.Count(); i++)
|
size_t count = m_paths.GetCount();
|
||||||
|
for ( size_t i=0; i<count; i++)
|
||||||
{
|
{
|
||||||
dir_item = new wxDirItemData(m_paths[i],m_names[i]);
|
dir_item = new wxDirItemData(m_paths[i],m_names[i]);
|
||||||
#ifdef __WXMSW__
|
#ifdef __WXMSW__
|
||||||
id = AppendItem( parent, m_names[i], -1, -1, dir_item);
|
id = AppendItem( parent, m_names[i], -1, -1, dir_item);
|
||||||
#else
|
#else
|
||||||
id = AppendItem( parent, m_names[i], 0, -1, dir_item);
|
id = AppendItem( parent, m_names[i], 0, -1, dir_item);
|
||||||
SetItemImage( id, 1, wxTreeItemIcon_Expanded );
|
SetItemImage( id, 1, wxTreeItemIcon_Expanded );
|
||||||
#endif
|
#endif
|
||||||
if (dir_item->m_hasSubDirs) SetItemHasChildren(id);
|
if (dir_item->m_hasSubDirs) SetItemHasChildren(id);
|
||||||
}
|
}
|
||||||
@@ -261,9 +266,9 @@ void wxDirCtrl::OnEndEditItem(wxTreeEvent &event)
|
|||||||
(event.GetLabel().First( wxT("/") ) != wxNOT_FOUND))
|
(event.GetLabel().First( wxT("/") ) != wxNOT_FOUND))
|
||||||
{
|
{
|
||||||
wxMessageDialog dialog(this, _("Illegal directory name."), _("Error"), wxOK | wxICON_ERROR );
|
wxMessageDialog dialog(this, _("Illegal directory name."), _("Error"), wxOK | wxICON_ERROR );
|
||||||
dialog.ShowModal();
|
dialog.ShowModal();
|
||||||
event.Veto();
|
event.Veto();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxTreeItemId id = event.GetItem();
|
wxTreeItemId id = event.GetItem();
|
||||||
@@ -279,7 +284,7 @@ void wxDirCtrl::OnEndEditItem(wxTreeEvent &event)
|
|||||||
if (wxFileExists(new_name))
|
if (wxFileExists(new_name))
|
||||||
{
|
{
|
||||||
wxMessageDialog dialog(this, _("File name exists already."), _("Error"), wxOK | wxICON_ERROR );
|
wxMessageDialog dialog(this, _("File name exists already."), _("Error"), wxOK | wxICON_ERROR );
|
||||||
dialog.ShowModal();
|
dialog.ShowModal();
|
||||||
event.Veto();
|
event.Veto();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -290,7 +295,7 @@ void wxDirCtrl::OnEndEditItem(wxTreeEvent &event)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
wxMessageDialog dialog(this, _("Operation not permitted."), _("Error"), wxOK | wxICON_ERROR );
|
wxMessageDialog dialog(this, _("Operation not permitted."), _("Error"), wxOK | wxICON_ERROR );
|
||||||
dialog.ShowModal();
|
dialog.ShowModal();
|
||||||
event.Veto();
|
event.Veto();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -373,11 +378,13 @@ BEGIN_EVENT_TABLE( wxDirDialog, wxDialog )
|
|||||||
// EVT_CHECKBOX (ID_CHECK, wxDirDialog::OnCheck)
|
// EVT_CHECKBOX (ID_CHECK, wxDirDialog::OnCheck)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message,
|
wxDirDialog::wxDirDialog(wxWindow *parent,
|
||||||
const wxString& defaultPath, long style,
|
const wxString& message,
|
||||||
const wxPoint& pos) :
|
const wxString& defaultPath,
|
||||||
wxDialog(parent, -1, message, pos, wxSize(300,300),
|
long style,
|
||||||
wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
|
const wxPoint& pos)
|
||||||
|
: wxDialog(parent, -1, message, pos, wxSize(300,300),
|
||||||
|
wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
|
||||||
{
|
{
|
||||||
m_message = message;
|
m_message = message;
|
||||||
m_dialogStyle = style;
|
m_dialogStyle = style;
|
||||||
@@ -390,8 +397,12 @@ wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message,
|
|||||||
wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
|
wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
// 1) dir ctrl
|
// 1) dir ctrl
|
||||||
m_dir = new wxDirCtrl( this, ID_DIRCTRL, "/", wxDefaultPosition, wxSize(200,200),
|
m_dir = new wxDirCtrl( this, ID_DIRCTRL, "/",
|
||||||
wxTR_HAS_BUTTONS | wxSUNKEN_BORDER | wxTR_EDIT_LABELS);
|
wxDefaultPosition,
|
||||||
|
wxSize(200,200),
|
||||||
|
wxTR_HAS_BUTTONS |
|
||||||
|
wxSUNKEN_BORDER |
|
||||||
|
wxTR_EDIT_LABELS );
|
||||||
topsizer->Add( m_dir, 1, wxTOP|wxLEFT|wxRIGHT | wxEXPAND, 10 );
|
topsizer->Add( m_dir, 1, wxTOP|wxLEFT|wxRIGHT | wxEXPAND, 10 );
|
||||||
|
|
||||||
// 2) text ctrl
|
// 2) text ctrl
|
||||||
@@ -428,6 +439,44 @@ wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message,
|
|||||||
|
|
||||||
Centre( wxBOTH );
|
Centre( wxBOTH );
|
||||||
|
|
||||||
|
// choose the directory corresponding to defaultPath in the tree
|
||||||
|
// VZ: using wxStringTokenizer is probably unsafe here (escaped slashes
|
||||||
|
// will not be processed correctly...)
|
||||||
|
wxStringTokenizer tk(defaultPath, wxFILE_SEP_PATH, wxTOKEN_STRTOK);
|
||||||
|
|
||||||
|
// we start from "My Computer" section because we're not sure to find the
|
||||||
|
// path among the predefined ones - ideally, we'd first look there and
|
||||||
|
// then do what we do now, but I don't have time to do it right now (VZ)
|
||||||
|
long cookie;
|
||||||
|
wxTreeItemId item = m_dir->GetFirstChild(m_dir->GetRootItem(), cookie);
|
||||||
|
|
||||||
|
wxString path;
|
||||||
|
while ( tk.HasMoreTokens() && item.IsOk() )
|
||||||
|
{
|
||||||
|
path << wxFILE_SEP_PATH << tk.GetNextToken();
|
||||||
|
|
||||||
|
m_dir->Expand(item);
|
||||||
|
|
||||||
|
wxTreeItemId child = m_dir->GetFirstChild(item, cookie);
|
||||||
|
while ( child.IsOk() )
|
||||||
|
{
|
||||||
|
wxDirItemData *data = (wxDirItemData*)m_dir->GetItemData(child);
|
||||||
|
if ( data->m_path == path )
|
||||||
|
break;
|
||||||
|
|
||||||
|
child = m_dir->GetNextChild(item, cookie);
|
||||||
|
}
|
||||||
|
|
||||||
|
item = child;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( item.IsOk() )
|
||||||
|
{
|
||||||
|
m_dir->Expand(item);
|
||||||
|
m_dir->SelectItem(item);
|
||||||
|
m_dir->EnsureVisible(item);
|
||||||
|
}
|
||||||
|
|
||||||
wxEndBusyCursor();
|
wxEndBusyCursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -514,24 +563,24 @@ void wxDirDialog::OnNew( wxCommandEvent& WXUNUSED(event) )
|
|||||||
{
|
{
|
||||||
// try NewName0, NewName1 etc.
|
// try NewName0, NewName1 etc.
|
||||||
int i = 0;
|
int i = 0;
|
||||||
do {
|
do {
|
||||||
new_name = wxT("NewName");
|
new_name = wxT("NewName");
|
||||||
wxString num;
|
wxString num;
|
||||||
num.Printf( wxT("%d"), i );
|
num.Printf( wxT("%d"), i );
|
||||||
new_name += num;
|
new_name += num;
|
||||||
|
|
||||||
path = data->m_path;
|
path = data->m_path;
|
||||||
path += wxT("/");
|
path += wxT("/");
|
||||||
path += new_name;
|
path += new_name;
|
||||||
i++;
|
i++;
|
||||||
} while (wxFileExists(path));
|
} while (wxFileExists(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
wxLogNull log;
|
wxLogNull log;
|
||||||
if (!wxMkdir(path))
|
if (!wxMkdir(path))
|
||||||
{
|
{
|
||||||
wxMessageDialog dialog(this, _("Operation not permitted."), _("Error"), wxOK | wxICON_ERROR );
|
wxMessageDialog dialog(this, _("Operation not permitted."), _("Error"), wxOK | wxICON_ERROR );
|
||||||
dialog.ShowModal();
|
dialog.ShowModal();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -548,4 +597,4 @@ void wxDirDialog::OnCheck( wxCommandEvent& WXUNUSED(event) )
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#endif
|
#endif // wxUSE_DIRDLG
|
||||||
|
Reference in New Issue
Block a user