bool wxIsDriveAvailable(const wxString& dirName);
+// ----------------------------------------------------------------------------
+// events
+// ----------------------------------------------------------------------------
+
+wxDEFINE_EVENT( wxEVT_COMMAND_DIRCTRL_CHANGED, wxTreeEvent );
+
// ----------------------------------------------------------------------------
// wxGetAvailableDrives, for WINDOWS, DOS, OS2, MAC, UNIX (returns "/")
// ----------------------------------------------------------------------------
EVT_TREE_ITEM_COLLAPSED (wxID_TREECTRL, wxGenericDirCtrl::OnCollapseItem)
EVT_TREE_BEGIN_LABEL_EDIT (wxID_TREECTRL, wxGenericDirCtrl::OnBeginEditItem)
EVT_TREE_END_LABEL_EDIT (wxID_TREECTRL, wxGenericDirCtrl::OnEndEditItem)
+ EVT_TREE_SEL_CHANGED (wxID_TREECTRL, wxGenericDirCtrl::OnTreeSelChange)
EVT_SIZE (wxGenericDirCtrl::OnSize)
END_EVENT_TABLE()
}
wxTreeItemId treeid = event.GetItem();
- wxDirItemData *data = (wxDirItemData*)m_treeCtrl->GetItemData( treeid );
+ wxDirItemData *data = GetItemData( treeid );
wxASSERT( data );
wxString new_name( wxPathOnly( data->m_path ) );
}
}
+void wxGenericDirCtrl::OnTreeSelChange(wxTreeEvent &event)
+{
+ wxTreeEvent changedEvent(wxEVT_COMMAND_DIRCTRL_CHANGED, GetId());
+
+ changedEvent.SetEventObject(this);
+ changedEvent.SetItem(event.GetItem());
+ changedEvent.SetClientObject(m_treeCtrl->GetItemData(event.GetItem()));
+
+ if (GetEventHandler()->SafelyProcessEvent(changedEvent) && !changedEvent.IsAllowed())
+ {
+ event.Veto();
+ }
+ else
+ {
+ event.Skip();
+ }
+}
+
void wxGenericDirCtrl::OnExpandItem(wxTreeEvent &event)
{
wxTreeItemId parentId = event.GetItem();
{
wxTreeItemId child;
- wxDirItemData *data = (wxDirItemData *) m_treeCtrl->GetItemData(parentId);
+ wxDirItemData *data = GetItemData(parentId);
if (!data->m_isExpanded)
return;
void wxGenericDirCtrl::PopulateNode(wxTreeItemId parentId)
{
- wxDirItemData *data = (wxDirItemData *) m_treeCtrl->GetItemData(parentId);
+ wxDirItemData *data = GetItemData(parentId);
if (data->m_isExpanded)
return;
wxTreeItemId childId = m_treeCtrl->GetFirstChild(parentId, cookie);
while (childId.IsOk())
{
- wxDirItemData* data = (wxDirItemData*) m_treeCtrl->GetItemData(childId);
+ wxDirItemData* data = GetItemData(childId);
if (data && !data->m_path.empty())
{
if (!lastId.IsOk())
return false;
- wxDirItemData *data = (wxDirItemData *) m_treeCtrl->GetItemData(lastId);
+ wxDirItemData *data = GetItemData(lastId);
if (data->m_isDir)
{
m_treeCtrl->Expand(lastId);
bool selectedChild = false;
while (childId.IsOk())
{
- data = (wxDirItemData*) m_treeCtrl->GetItemData(childId);
+ data = GetItemData(childId);
if (data && data->m_path != wxEmptyString && !data->m_isDir)
{
return true;
}
+wxDirItemData* wxGenericDirCtrl::GetItemData(wxTreeItemId itemId)
+{
+ return static_cast<wxDirItemData*>(m_treeCtrl->GetItemData(itemId));
+}
+
wxString wxGenericDirCtrl::GetPath(wxTreeItemId itemId) const
{
const wxDirItemData*