#endif
// Below is the compare stuff.
-// For the generic implementation, both the leaf nodes and the nodes are sorted for
+// For the generic implementation, both the leaf nodes and the nodes are sorted for
// fast search when needed
static wxDataViewModel* g_model;
static int g_column = -2;
WX_DEFINE_ARRAY( wxDataViewTreeNode *, wxDataViewTreeNodes );
WX_DEFINE_ARRAY( void* , wxDataViewTreeLeaves);
-int LINKAGEMODE wxGenericTreeModelNodeCmp( wxDataViewTreeNode ** node1,
+int LINKAGEMODE wxGenericTreeModelNodeCmp( wxDataViewTreeNode ** node1,
wxDataViewTreeNode ** node2);
int LINKAGEMODE wxGenericTreeModelItemCmp( void ** id1, void ** id2);
int m_subTreeCount;
};
-int LINKAGEMODE wxGenericTreeModelNodeCmp( wxDataViewTreeNode ** node1,
+int LINKAGEMODE wxGenericTreeModelNodeCmp( wxDataViewTreeNode ** node1,
wxDataViewTreeNode ** node2)
{
return g_model->Compare( (*node1)->GetItem(), (*node2)->GetItem(), g_column, g_asending );
int GetEndOfLastCol() const;
unsigned int GetFirstVisibleRow() const;
- // I change this method to un const because in the tree view,
- // the displaying number of the tree are changing along with the
+ // I change this method to un const because in the tree view,
+ // the displaying number of the tree are changing along with the
// expanding/collapsing of the tree nodes
unsigned int GetLastVisibleRow();
unsigned int GetRowCount();
wxDataViewItem GetSelection() const;
wxDataViewSelection GetSelections(){ return m_selection; }
- void SetSelections( const wxDataViewSelection & sel )
+ void SetSelections( const wxDataViewSelection & sel )
{ m_selection = sel; UpdateDisplay(); }
void Select( const wxArrayInt& aSelections );
void SelectAllRows( bool on );
{
}
-void wxDataViewCustomRenderer::RenderText( const wxString &text, int xoffset,
+void wxDataViewCustomRenderer::RenderText( const wxString &text, int xoffset,
wxRect cell, wxDC *dc, int state )
{
wxDataViewCtrl *view = GetOwner()->GetOwner();
wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT) :
view->GetForegroundColour();
dc->SetTextForeground(col);
- dc->DrawText( text,
- cell.x + xoffset,
+ dc->DrawText( text,
+ cell.x + xoffset,
cell.y + ((cell.height - dc->GetCharHeight()) / 2));
}
//-----------------------------------------------------------------------------
// The tree building helper, declared firstly
-static void BuildTreeHelper( wxDataViewModel * model, wxDataViewItem & item,
+static void BuildTreeHelper( wxDataViewModel * model, wxDataViewItem & item,
wxDataViewTreeNode * node);
int LINKAGEMODE wxDataViewSelectionCmp( unsigned int row1, unsigned int row2 )
}
}
-wxDragResult wxDataViewMainWindow::OnDragOver( wxDataFormat format, wxCoord x,
+wxDragResult wxDataViewMainWindow::OnDragOver( wxDataFormat format, wxCoord x,
wxCoord y, wxDragResult def )
{
int xx = x;
return true;
}
-wxDragResult wxDataViewMainWindow::OnData( wxDataFormat format, wxCoord x, wxCoord y,
+wxDragResult wxDataViewMainWindow::OnData( wxDataFormat format, wxCoord x, wxCoord y,
wxDragResult def )
{
int xx = x;
{
wxDataViewTreeNode *node = GetTreeNodeByRow(row);
indent = GetOwner()->GetIndent() * node->GetIndentLevel();
- indent = indent + m_lineHeight;
+ indent = indent + m_lineHeight;
// try to use the m_lineHeight as the expander space
if(!node->HasChildren())
dataitem = node->GetItem();
- if ((i > 0) && model->IsContainer(dataitem) &&
+ if ((i > 0) && model->IsContainer(dataitem) &&
!model->HasContainerColumns(dataitem))
continue;
}
// change the cell_rect.x to the appropriate pos
int expander_x = indent + EXPANDER_MARGIN;
- int expander_y = cell_rect.y + EXPANDER_MARGIN + (GetLineHeight(item) / 2)
+ int expander_y = cell_rect.y + EXPANDER_MARGIN + (GetLineHeight(item) / 2)
- (expander_width/2) - EXPANDER_OFFSET;
- indent = indent + m_lineHeight;
+ indent = indent + m_lineHeight;
// try to use the m_lineHeight as the expander space
dc.SetPen( m_penExpander );
flag |= wxCONTROL_CURRENT;
}
if( node->IsOpen() )
- wxRendererNative::Get().DrawTreeItemButton( this, dc, rect,
+ wxRendererNative::Get().DrawTreeItemButton( this, dc, rect,
flag|wxCONTROL_EXPANDED );
else
wxRendererNative::Get().DrawTreeItemButton( this, dc, rect, flag);
// cannot be bigger than allocated space
wxSize size = cell->GetSize();
- // Because of the tree structure indent, here we should minus the width
+ // Because of the tree structure indent, here we should minus the width
// of the cell for drawing
size.x = wxMin( size.x + 2*PADDING_RIGHTLEFT, cell_rect.width - indent );
// size.y = wxMin( size.y, cell_rect.height );
wxDataViewTreeNode * node = FindNode(parent);
wxCHECK_MSG( node != NULL, false, "item not found" );
- wxCHECK_MSG( node->GetChildren().Index( item.GetID() ) != wxNOT_FOUND,
+ wxCHECK_MSG( node->GetChildren().Index( item.GetID() ) != wxNOT_FOUND,
false, "item not found" );
int sub = -1;
if (column->IsHidden())
continue; // skip it!
- if ((col != 0) &&
- model->IsContainer(item) &&
+ if ((col != 0) &&
+ model->IsContainer(item) &&
!model->HasContainerColumns(item))
continue; // skip it!
wxVariant value;
model->GetValue( value, item, column->GetModelColumn() );
- wxDataViewRenderer *renderer =
+ wxDataViewRenderer *renderer =
const_cast<wxDataViewRenderer*>(column->GetRenderer());
renderer->SetValue( value );
height = wxMax( height, renderer->GetSize().y );
if (column->IsHidden())
continue; // skip it!
- if ((col != 0) &&
- model->IsContainer(item) &&
+ if ((col != 0) &&
+ model->IsContainer(item) &&
!model->HasContainerColumns(item))
continue; // skip it!
wxVariant value;
model->GetValue( value, item, column->GetModelColumn() );
- wxDataViewRenderer *renderer =
+ wxDataViewRenderer *renderer =
const_cast<wxDataViewRenderer*>(column->GetRenderer());
renderer->SetValue( value );
height = wxMax( height, renderer->GetSize().y );
if (column->IsHidden())
continue; // skip it!
- if ((col != 0) &&
- model->IsContainer(item) &&
+ if ((col != 0) &&
+ model->IsContainer(item) &&
!model->HasContainerColumns(item))
continue; // skip it!
wxVariant value;
model->GetValue( value, item, column->GetModelColumn() );
- wxDataViewRenderer *renderer =
+ wxDataViewRenderer *renderer =
const_cast<wxDataViewRenderer*>(column->GetRenderer());
renderer->SetValue( value );
height = wxMax( height, renderer->GetSize().y );
class RowToItemJob: public DoJob
{
public:
- RowToItemJob( unsigned int row , int current )
+ RowToItemJob( unsigned int row , int current )
{ this->row = row; this->current = current; }
virtual ~RowToItemJob() {}
}
else
{
- // If the current has no child node, we can find the desired item of the row
+ // If the current has no child node, we can find the desired item of the row
// number directly.
- // This if can speed up finding in some case, and will has a very good effect
+ // This if can speed up finding in some case, and will has a very good effect
// when it comes to list view
if( node->GetNodes().GetCount() == 0)
{
{
parent = node;
- // If the current node has no children, we can find the desired item of the
+ // If the current node has no children, we can find the desired item of the
// row number directly.
- // This if can speed up finding in some case, and will have a very good
+ // This if can speed up finding in some case, and will have a very good
// effect for list views.
if( node->GetNodes().GetCount() == 0)
{
return job.GetResult();
}
-wxDataViewEvent wxDataViewMainWindow::SendExpanderEvent( wxEventType type,
+wxDataViewEvent wxDataViewMainWindow::SendExpanderEvent( wxEventType type,
const wxDataViewItem & item )
{
wxWindow *parent = GetParent();
wxDataViewTreeNode * node = GetTreeNodeByRow(row);
if (!node)
return;
-
+
if (!node->HasChildren())
{
delete node;
return;
}
-
+
if (!node->IsOpen())
{
- wxDataViewEvent e =
+ wxDataViewEvent e =
SendExpanderEvent(wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDING, node->GetItem());
// Check if the user prevent expanding
wxDataViewTreeNode *node = GetTreeNodeByRow(row);
if (!node)
return;
-
+
if (!node->HasChildren())
{
delete node;
if (node->IsOpen())
{
- wxDataViewEvent e =
+ wxDataViewEvent e =
SendExpanderEvent(wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSING,node->GetItem());
if( e.GetSkipped() )
return;
return NULL;
}
-void wxDataViewMainWindow::HitTest( const wxPoint & point, wxDataViewItem & item,
+void wxDataViewMainWindow::HitTest( const wxPoint & point, wxDataViewItem & item,
wxDataViewColumn* &column )
{
wxDataViewColumn *col = NULL;
item = GetItemByRow( GetLineAt( y ) );
}
-wxRect wxDataViewMainWindow::GetItemRect( const wxDataViewItem & item,
+wxRect wxDataViewMainWindow::GetItemRect( const wxDataViewItem & item,
const wxDataViewColumn* column )
{
int xpos = 0;
int width = 0;
-
+
unsigned int cols = GetOwner()->GetColumnCount();
// If column is null the loop will compute the combined width of all columns.
// Otherwise, it will compute the x position of the column we are looking for.
{
if (!m_root)
{
- wxDataViewIndexListModel *list_model =
+ wxDataViewIndexListModel *list_model =
(wxDataViewIndexListModel*) GetOwner()->GetModel();
#ifndef __WXMAC__
return list_model->GetLastIndex() + 1;
}
}
-static void BuildTreeHelper( wxDataViewModel * model, wxDataViewItem & item,
+static void BuildTreeHelper( wxDataViewModel * model, wxDataViewItem & item,
wxDataViewTreeNode * node)
{
if( !model->IsContainer( item ) )
switch ( event.GetKeyCode() )
{
case WXK_RETURN:
- {
- if (m_currentRow >= 0)
{
wxWindow *parent = GetParent();
- wxDataViewEvent le(wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, parent->GetId());
+ wxDataViewEvent le(wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED,
+ parent->GetId());
le.SetItem( GetItemByRow(m_currentRow) );
le.SetEventObject(parent);
le.SetModel(GetOwner()->GetModel());
parent->GetEventHandler()->ProcessEvent(le);
}
break;
- }
+
case WXK_UP:
if ( m_currentRow > 0 )
OnArrowChar( m_currentRow - 1, event );
if (event.LeftIsDown())
{
- m_owner->CalcUnscrolledPosition( m_dragStart.x, m_dragStart.y,
+ m_owner->CalcUnscrolledPosition( m_dragStart.x, m_dragStart.y,
&m_dragStart.x, &m_dragStart.y );
unsigned int drag_item_row = GetLineAt( m_dragStart.y );
wxDataViewItem item = GetItemByRow( drag_item_row );
SendSelectionChangedEvent( GetItemByRow(m_lineSelectSingleOnUp) );
}
- // If the user click the expander, we do not do editing even if the column
+ // If the user click the expander, we do not do editing even if the column
// with expander are editable
if (m_lastOnSame && !ignore_other_columns)
{
{
wxDataViewTreeNode* node = GetTreeNodeByRow(current);
- // hoverOverExpander being true tells us that our node must be
+ // hoverOverExpander being true tells us that our node must be
// valid and have children.
// So we don't need any extra checks.
if( node->IsOpen() )
cell->SetValue( value );
wxRect cell_rect( xpos, GetLineStart( current ),
col->GetWidth(), GetLineHeight( current ) );
- /* ignore ret */ cell->LeftClick( event.GetPosition(), cell_rect,
+ /* ignore ret */ cell->LeftClick( event.GetPosition(), cell_rect,
model, item, col->GetModelColumn());
}
}
}
-void wxDataViewCtrl::HitTest( const wxPoint & point, wxDataViewItem & item,
+void wxDataViewCtrl::HitTest( const wxPoint & point, wxDataViewItem & item,
wxDataViewColumn* &column ) const
{
m_clientArea->HitTest(point, item, column);
}
-wxRect wxDataViewCtrl::GetItemRect( const wxDataViewItem & item,
+wxRect wxDataViewCtrl::GetItemRect( const wxDataViewItem & item,
const wxDataViewColumn* column ) const
{
return m_clientArea->GetItemRect(item, column);
void wxDataViewCtrl::Collapse( const wxDataViewItem & item )
{
int row = m_clientArea->GetRowByItem( item );
- wxPrintf( "row %d\n", row );
if (row != -1)
m_clientArea->Collapse(row);
}
wxDataViewColumn* col = GetColumn( column );
if (!col)
return;
-
+
wxRect itemRect = GetItemRect(item, col);
wxDataViewRenderer* renderer = col->GetRenderer();
renderer->StartEditing(item, itemRect);
}
-#endif
- // !wxUSE_GENERICDATAVIEWCTRL
+#endif // !wxUSE_GENERICDATAVIEWCTRL
-#endif
- // wxUSE_DATAVIEWCTRL
+#endif // wxUSE_DATAVIEWCTRL