]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/treectrl.cpp
Performance optimization
[wxWidgets.git] / src / mac / carbon / treectrl.cpp
index 3aea32e970e95e791b783448a9c81f198ab64193..82a90b0854cade48d8db5862f41b2d14700e5564 100644 (file)
@@ -1,21 +1,21 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        treectrl.cpp
+// Name:        src/mac/carbon/treectrl.cpp
 // Purpose:     wxTreeCtrl. See also Robert's generic wxTreeCtrl.
-// Author:      AUTHOR
+// Author:      Stefan Csomor
 // Modified by:
-// Created:     ??/??/98
+// Created:     1998-01-01
 // RCS-ID:      $Id$
-// Copyright:   (c) AUTHOR
-// Licence:    wxWindows licence
+// Copyright:   (c) Stefan Csomor
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
-#pragma implementation "treectrl.h"
-#endif
+#include "wx/wxprec.h"
 
 #include "wx/stubs/textctrl.h"
+#include "wx/treebase.h"
 #include "wx/stubs/treectrl.h"
 
+
 IMPLEMENT_DYNAMIC_CLASS(wxTreeCtrl, wxControl)
 IMPLEMENT_DYNAMIC_CLASS(wxTreeItem, wxObject)
 
@@ -27,39 +27,40 @@ wxTreeCtrl::wxTreeCtrl()
     m_textCtrl = NULL;
 }
 
-bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size,
-            long style, const wxValidator& validator, const wxString& name)
+bool wxTreeCtrl::Create(wxWindow *parent,
+    wxWindowID id, const wxPoint& pos, const wxSize& size,
+    long style, const wxValidator& wxVALIDATOR_PARAM(validator),
+    const wxString& name)
 {
-    SetName(name);
-    SetValidator(validator);
-
     m_imageListNormal = NULL;
     m_imageListState = NULL;
     m_textCtrl = NULL;
 
-    m_windowStyle = style;
-
+    SetName(name);
+#if wxUSE_VALIDATORS
+    SetValidator(validator);
+#endif
     SetParent(parent);
 
-    m_windowId = (id == -1) ? NewControlId() : id;
+    m_windowStyle = style;
+
+    m_windowId = (id == wxID_ANY) ? NewControlId() : id;
 
-    if (parent) parent->AddChild(this);
+    if (parent)
+        parent->AddChild(this);
 
-    // TODO create tree control
+    // TODO: create tree control
 
-    return FALSE;
+    return false;
 }
 
 wxTreeCtrl::~wxTreeCtrl()
 {
-    if (m_textCtrl)
-    {
-        delete m_textCtrl;
-    }
+    delete m_textCtrl;
 }
 
 // Attributes
-int wxTreeCtrl::GetCount() const
+unsigned int wxTreeCtrl::GetCount() const
 {
     // TODO
     return 0;
@@ -78,27 +79,21 @@ void wxTreeCtrl::SetIndent(int indent)
 
 wxImageList *wxTreeCtrl::GetImageList(int which) const
 {
-  if ( which == wxIMAGE_LIST_NORMAL )
-    {
-    return m_imageListNormal;
-  }
-  else if ( which == wxIMAGE_LIST_STATE )
-    {
-    return m_imageListState;
-  }
-  return NULL;
+    if ( which == wxIMAGE_LIST_NORMAL )
+        return m_imageListNormal;
+    else if ( which == wxIMAGE_LIST_STATE )
+        return m_imageListState;
+
+    return NULL;
 }
 
 void wxTreeCtrl::SetImageList(wxImageList *imageList, int which)
 {
     if ( which == wxIMAGE_LIST_NORMAL )
-    {
         m_imageListNormal = imageList;
-    }
     else if ( which == wxIMAGE_LIST_STATE )
-    {
         m_imageListState = imageList;
-    }
+
     // TODO
 }
 
@@ -111,7 +106,7 @@ long wxTreeCtrl::GetNextItem(long item, int code) const
 bool wxTreeCtrl::ItemHasChildren(long item) const
 {
     // TODO
-    return FALSE;
+    return false;
 }
 
 long wxTreeCtrl::GetChild(long item) const
@@ -120,7 +115,7 @@ long wxTreeCtrl::GetChild(long item) const
     return 0;
 }
 
-long wxTreeCtrl::GetParent(long item) const
+long wxTreeCtrl::GetItemParent(long item) const
 {
     // TODO
     return 0;
@@ -153,20 +148,20 @@ long wxTreeCtrl::GetRootItem() const
 bool wxTreeCtrl::GetItem(wxTreeItem& info) const
 {
     // TODO
-    return FALSE;
+    return false;
 }
 
 bool wxTreeCtrl::SetItem(wxTreeItem& info)
 {
     // TODO
-    return FALSE;
+    return false;
 }
 
 int wxTreeCtrl::GetItemState(long item, long stateMask) const
 {
     wxTreeItem info;
 
-    info.m_mask = wxTREE_MASK_STATE ;
+    info.m_mask = wxTREE_MASK_STATE;
     info.m_stateMask = stateMask;
     info.m_itemId = item;
 
@@ -180,7 +175,7 @@ bool wxTreeCtrl::SetItemState(long item, long state, long stateMask)
 {
     wxTreeItem info;
 
-    info.m_mask = wxTREE_MASK_STATE ;
+    info.m_mask = wxTREE_MASK_STATE;
     info.m_state = state;
     info.m_stateMask = stateMask;
     info.m_itemId = item;
@@ -192,13 +187,14 @@ bool wxTreeCtrl::SetItemImage(long item, int image, int selImage)
 {
     wxTreeItem info;
 
-    info.m_mask = wxTREE_MASK_IMAGE ;
+    info.m_mask = wxTREE_MASK_IMAGE;
     info.m_image = image;
     if ( selImage > -1)
     {
         info.m_selectedImage = selImage;
         info.m_mask |= wxTREE_MASK_SELECTED_IMAGE;
     }
+
     info.m_itemId = item;
 
     return SetItem(info);
@@ -208,11 +204,12 @@ wxString wxTreeCtrl::GetItemText(long item) const
 {
     wxTreeItem info;
 
-    info.m_mask = wxTREE_MASK_TEXT ;
+    info.m_mask = wxTREE_MASK_TEXT;
     info.m_itemId = item;
 
     if (!GetItem(info))
-        return wxString("");
+        return wxEmptyString;
+
     return info.m_text;
 }
 
@@ -220,7 +217,7 @@ void wxTreeCtrl::SetItemText(long item, const wxString& str)
 {
     wxTreeItem info;
 
-    info.m_mask = wxTREE_MASK_TEXT ;
+    info.m_mask = wxTREE_MASK_TEXT;
     info.m_itemId = item;
     info.m_text = str;
 
@@ -231,11 +228,12 @@ long wxTreeCtrl::GetItemData(long item) const
 {
     wxTreeItem info;
 
-    info.m_mask = wxTREE_MASK_DATA ;
+    info.m_mask = wxTREE_MASK_DATA;
     info.m_itemId = item;
 
     if (!GetItem(info))
         return 0;
+
     return info.m_data;
 }
 
@@ -243,7 +241,7 @@ bool wxTreeCtrl::SetItemData(long item, long data)
 {
     wxTreeItem info;
 
-    info.m_mask = wxTREE_MASK_DATA ;
+    info.m_mask = wxTREE_MASK_DATA;
     info.m_itemId = item;
     info.m_data = data;
 
@@ -253,10 +251,10 @@ bool wxTreeCtrl::SetItemData(long item, long data)
 bool wxTreeCtrl::GetItemRect(long item, wxRect& rect, bool textOnly) const
 {
     // TODO
-    return FALSE;
+    return false;
 }
 
-wxTextCtrl* wxTreeCtrl::GetEditControl() const
+wxTextCtrl * wxTreeCtrl::GetEditControl() const
 {
     return m_textCtrl;
 }
@@ -265,56 +263,61 @@ wxTextCtrl* wxTreeCtrl::GetEditControl() const
 bool wxTreeCtrl::DeleteItem(long item)
 {
     // TODO
-    return FALSE;
+    return false;
 }
 
 bool wxTreeCtrl::ExpandItem(long item, int action)
 {
     // TODO
-  switch ( action )
-  {
+    switch ( action )
+    {
     case wxTREE_EXPAND_EXPAND:
-      break;
+        break;
 
     case wxTREE_EXPAND_COLLAPSE:
-      break;
+        break;
 
     case wxTREE_EXPAND_COLLAPSE_RESET:
-      break;
+        break;
 
     case wxTREE_EXPAND_TOGGLE:
-      break;
+        break;
 
     default:
-      wxFAIL_MSG("unknown action in wxTreeCtrl::ExpandItem");
-  }
-
-  bool bOk = FALSE; // TODO expand item
-
-  // May not send messages, so emulate them
-  if ( bOk ) {
-    wxTreeEvent event(wxEVT_NULL, m_windowId);
-    event.m_item.m_itemId  = item;
-    event.m_item.m_mask      =
-    event.m_item.m_stateMask = 0xffff; // get all
-    GetItem(event.m_item);
-
-    bool bIsExpanded = (event.m_item.m_state & wxTREE_STATE_EXPANDED) != 0;
-
-    event.m_code = action;
-    event.SetEventObject(this);
+        wxFAIL_MSG(wxT("unknown action in wxTreeCtrl::ExpandItem");
+    }
 
-    // @@@ return values of {EXPAND|COLLAPS}ING event handler is discarded
-    event.SetEventType(bIsExpanded ? wxEVT_COMMAND_TREE_ITEM_EXPANDING
-                                   : wxEVT_COMMAND_TREE_ITEM_COLLAPSING);
-    GetEventHandler()->ProcessEvent(event);
+    // TODO: expand item
+    bool bOk = false;
 
-    event.SetEventType(bIsExpanded ? wxEVT_COMMAND_TREE_ITEM_EXPANDED
-                                   : wxEVT_COMMAND_TREE_ITEM_COLLAPSED);
-    GetEventHandler()->ProcessEvent(event);
-  }
+    // May not send messages, so emulate them
+    if ( bOk )
+    {
+        wxTreeEvent event(wxEVT_NULL, m_windowId);
+        event.m_item.m_itemId = item;
+        event.m_item.m_mask = event.m_item.m_stateMask = 0xFFFF; // get all
+        GetItem(event.m_item);
+
+        bool bIsExpanded = (event.m_item.m_state & wxTREE_STATE_EXPANDED) != 0;
+
+        event.m_code = action;
+        event.SetEventObject(this);
+
+        // @@@ return values of {EXPAND|COLLAPS}ING event handler is discarded
+        event.SetEventType(
+            bIsExpanded
+            ? wxEVT_COMMAND_TREE_ITEM_EXPANDING
+            : wxEVT_COMMAND_TREE_ITEM_COLLAPSING);
+        HandleWindowEvent(event);
+
+        event.SetEventType(
+            bIsExpanded
+            ? wxEVT_COMMAND_TREE_ITEM_EXPANDED
+            : wxEVT_COMMAND_TREE_ITEM_COLLAPSED);
+        HandleWindowEvent(event);
+    }
 
-  return bOk;
+    return bOk;
 }
 
 long wxTreeCtrl::InsertItem(long parent, wxTreeItem& info, long insertAfter)
@@ -323,8 +326,8 @@ long wxTreeCtrl::InsertItem(long parent, wxTreeItem& info, long insertAfter)
     return 0;
 }
 
-long wxTreeCtrl::InsertItem(long parent, const wxString& label, int image, int selImage,
-  long insertAfter)
+long wxTreeCtrl::InsertItem(long parent, const wxString& label,
+    int image, int selImage, long insertAfter)
 {
     wxTreeItem info;
     info.m_text = label;
@@ -345,22 +348,22 @@ long wxTreeCtrl::InsertItem(long parent, const wxString& label, int image, int s
 bool wxTreeCtrl::SelectItem(long item)
 {
     // TODO
-    return FALSE;
+    return false;
 }
 
 bool wxTreeCtrl::ScrollTo(long item)
 {
     // TODO
-    return FALSE;
+    return false;
 }
 
 bool wxTreeCtrl::DeleteAllItems()
 {
     // TODO
-    return FALSE;
+    return false;
 }
 
-wxTextCtrl* wxTreeCtrl::EditLabel(long item, wxClassInfo* textControlClass)
+wxTextCtrl * wxTreeCtrl::EditLabel(long item, wxClassInfo* textControlClass)
 {
     // TODO
     return NULL;
@@ -370,7 +373,7 @@ wxTextCtrl* wxTreeCtrl::EditLabel(long item, wxClassInfo* textControlClass)
 bool wxTreeCtrl::EndEditLabel(bool cancel)
 {
     // TODO
-    return FALSE;
+    return false;
 }
 
 long wxTreeCtrl::HitTest(const wxPoint& point, int& flags)
@@ -382,13 +385,13 @@ long wxTreeCtrl::HitTest(const wxPoint& point, int& flags)
 bool wxTreeCtrl::SortChildren(long item)
 {
     // TODO
-    return FALSE;
+    return false;
 }
 
 bool wxTreeCtrl::EnsureVisible(long item)
 {
     // TODO
-    return FALSE;
+    return false;
 }
 
 // Tree item structure
@@ -407,10 +410,9 @@ wxTreeItem::wxTreeItem()
 // Tree event
 IMPLEMENT_DYNAMIC_CLASS(wxTreeEvent, wxCommandEvent)
 
-wxTreeEvent::wxTreeEvent(wxEventType commandType, int id):
-  wxCommandEvent(commandType, id)
+wxTreeEvent::wxTreeEvent(wxEventType commandType, int id)
+    : wxCommandEvent(commandType, id)
 {
     m_code = 0;
     m_oldItem = 0;
 }
-