bool ItemAdded( const wxDataViewItem &parent, const wxDataViewItem &item );
bool ItemDeleted( const wxDataViewItem &item );
-
+ bool ItemChanged( const wxDataViewItem &item );
+ bool ValueChanged( const wxDataViewItem &item, unsigned int col );
+ bool Cleared();
void Resort();
protected:
~wxGtkTreeModelNode()
{
+ g_model = m_internal->GetDataViewModel();
size_t count = m_children->GetCount();
size_t i;
for (i = 0; i < count; i++)
unsigned int AddNode( wxGtkTreeModelNode* child )
{
+ g_model = m_internal->GetDataViewModel();
m_nodes.Add( child );
return m_children->Add( child->GetItem().GetID() );
}
unsigned int AddLeave( void* id )
{
+ g_model = m_internal->GetDataViewModel();
return m_children->Add( id );
}
void DeleteChild( void* id )
{
+ g_model = m_internal->GetDataViewModel();
size_t pos;
size_t count = m_children->GetCount();
for (pos = 0; pos < count; pos++)
GTK_TREE_MODEL(m_wxgtk_model), path, &iter );
gtk_tree_path_free (path);
+ m_owner->GtkGetInternal()->ItemChanged( item );
+
return true;
}
// Redraw
gtk_widget_queue_draw_area( GTK_WIDGET(widget),
cell_area.x - xdiff, ydiff + cell_area.y, cell_area.width, cell_area.height );
+
+ m_owner->GtkGetInternal()->ValueChanged( item, model_col );
+
+ return true;
}
}
- return true;
+ return false;
}
bool wxGtkDataViewModelNotifier::Cleared()
{
+ // TODO: delete everything
+
+ m_owner->GtkGetInternal()->Cleared();
+
return false;
}
void wxGtkTreeModelNode::Resort()
{
+ g_model = m_internal->GetDataViewModel();
+
size_t child_count = GetChildCount();
if (child_count == 0)
return;
node->AddNode( new wxGtkTreeModelNode( node, child, this ) );
else
node->AddLeave( child.GetID() );
+
+ // Don't send any events here
+
child = m_wx_model->GetNextSibling( child );
}
}
parent_node->AddNode( new wxGtkTreeModelNode( parent_node, item, this ) );
else
parent_node->AddLeave( item.GetID() );
+
+ wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_MODEL_ITEM_ADDED, m_owner->GetId() );
+ event.SetEventObject( m_owner );
+ event.SetModel( m_owner->GetModel() );
+ event.SetItem( item );
+ m_owner->GetEventHandler()->ProcessEvent( event );
+
return true;
}
{
wxGtkTreeModelNode *parent = FindParentNode( item );
parent->DeleteChild( item.GetID() );
+
+ wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_MODEL_ITEM_DELETED, m_owner->GetId() );
+ event.SetEventObject( m_owner );
+ event.SetModel( m_owner->GetModel() );
+ event.SetItem( item );
+ m_owner->GetEventHandler()->ProcessEvent( event );
+
+ return true;
+}
+
+bool wxDataViewCtrlInternal::ItemChanged( const wxDataViewItem &item )
+{
+ wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_MODEL_ITEM_CHANGED, m_owner->GetId() );
+ event.SetEventObject( m_owner );
+ event.SetModel( m_owner->GetModel() );
+ event.SetItem( item );
+ m_owner->GetEventHandler()->ProcessEvent( event );
+
+ return true;
+}
+
+bool wxDataViewCtrlInternal::ValueChanged( const wxDataViewItem &item, unsigned int col )
+{
+ wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_MODEL_VALUE_CHANGED, m_owner->GetId() );
+ event.SetEventObject( m_owner );
+ event.SetModel( m_owner->GetModel() );
+ event.SetColumn( col );
+ event.SetItem( item );
+ m_owner->GetEventHandler()->ProcessEvent( event );
+
+ return true;
+}
+
+bool wxDataViewCtrlInternal::Cleared()
+{
+ wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_MODEL_CLEARED, m_owner->GetId() );
+ event.SetEventObject( m_owner );
+ event.SetModel( m_owner->GetModel() );
+ m_owner->GetEventHandler()->ProcessEvent( event );
+
return true;
}
gboolean wxDataViewCtrlInternal::get_iter( GtkTreeIter *iter, GtkTreePath *path )
{
+ g_model = m_wx_model;
+
int depth = gtk_tree_path_get_depth( path );
wxGtkTreeModelNode *node = m_root;
GtkTreePath *wxDataViewCtrlInternal::get_path( GtkTreeIter *iter )
{
+ g_model = m_wx_model;
+
GtkTreePath *retval = gtk_tree_path_new ();
void *id = iter->user_data;
GtkTreePath *wxDataViewCtrlInternal::get_path_safe( GtkTreeIter *iter )
{
+ g_model = m_wx_model;
+
GtkTreePath *retval = gtk_tree_path_new ();
void *id = iter->user_data;
gboolean wxDataViewCtrlInternal::iter_next( GtkTreeIter *iter )
{
+ g_model = m_wx_model;
+
wxGtkTreeModelNode *parent = FindParentNode( iter );
unsigned int pos = parent->GetChildren().Index( iter->user_data );
gboolean wxDataViewCtrlInternal::iter_children( GtkTreeIter *iter, GtkTreeIter *parent )
{
+ g_model = m_wx_model;
+
wxDataViewItem item( (void*) parent->user_data );
if (!m_wx_model->IsContainer( item ))
gboolean wxDataViewCtrlInternal::iter_has_child( GtkTreeIter *iter )
{
+ g_model = m_wx_model;
+
wxDataViewItem item( (void*) iter->user_data );
bool is_container = m_wx_model->IsContainer( item );
gint wxDataViewCtrlInternal::iter_n_children( GtkTreeIter *iter )
{
+ g_model = m_wx_model;
+
wxDataViewItem item( (void*) iter->user_data );
if (!m_wx_model->IsContainer( item ))
gboolean wxDataViewCtrlInternal::iter_nth_child( GtkTreeIter *iter, GtkTreeIter *parent, gint n )
{
+ g_model = m_wx_model;
+
void* id = NULL;
if (parent) id = (void*) parent->user_data;
wxDataViewItem item( id );
gboolean wxDataViewCtrlInternal::iter_parent( GtkTreeIter *iter, GtkTreeIter *child )
{
+ g_model = m_wx_model;
+
wxGtkTreeModelNode *node = FindParentNode( child );
if (!node)
return FALSE;