static void on_add_watch (gpointer data, gpointer user_data) { DebugTree* this = (DebugTree *)user_data; gboolean auto_update = ((const gchar *)data)[0] & AUTO_UPDATE_WATCH ? TRUE : FALSE; IAnjutaDebuggerVariableObject var = {NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, -1}; var.expression = &((gchar *)data)[1]; debug_tree_add_watch (this, &var, auto_update); }
void debug_tree_replace_list (DebugTree *tree, const GList *expressions) { GtkTreeModel* model = gtk_tree_view_get_model (GTK_TREE_VIEW(tree->view)); GtkTreeIter iter; gboolean valid; GList *list = g_list_copy ((GList *)expressions); /* Keep in the tree only the variable in the list */ valid = gtk_tree_model_get_iter_first (model, &iter); while (valid) { GList *find = NULL; gchar *exp; DmaVariableData *node; gtk_tree_model_get (model, &iter, VARIABLE_COLUMN, &exp, DTREE_ENTRY_COLUMN, &node, -1); if ((node->deleted == FALSE) && (node->exited == FALSE) && (exp != NULL)) { find = g_list_find_custom (list, exp, (GCompareFunc)strcmp); } if (find) { /* Keep variable in tree, remove in add list */ list = g_list_delete_link (list, find); valid = gtk_tree_model_iter_next (model, &iter); } else { /* Remove variable from the tree */ delete_parent(model, NULL, &iter, tree->debugger); valid = gtk_tree_store_remove (GTK_TREE_STORE (model), &iter); } } /* Create new variable */ while (list) { IAnjutaDebuggerVariableObject var = {NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, -1}; var.expression = (gchar *)(list->data); debug_tree_add_watch (tree, &var, TRUE); list = g_list_delete_link (list, list); } }
static void on_replace_watch (gpointer data, gpointer user_data) { DebugTree* tree = (DebugTree *)user_data; const gchar *expression = (const gchar *)data; GtkTreeModel*const model = gtk_tree_view_get_model (GTK_TREE_VIEW(tree->view)); IAnjutaDebuggerVariableObject var = {NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, -1}; GtkTreeIter iter; if (debug_tree_find_expression (model, &iter, expression, NULL)) { DmaVariableData *data; gtk_tree_model_get (model, &iter, DTREE_ENTRY_COLUMN, &data, -1); if (data != NULL) data->deleted = FALSE; } else { var.expression = (gchar *)expression; debug_tree_add_watch (tree, &var, TRUE); } }
static void on_debug_tree_variable_changed (GtkCellRendererText *cell, gchar *path_string, gchar *text, gpointer user_data) { DebugTree *tree = (DebugTree *)user_data; GtkTreeIter iter; GtkTreeModel * model; model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree->view)); if (gtk_tree_model_get_iter_from_string (model, &iter, path_string)) { debug_tree_remove (tree, &iter); if ((text != NULL) && (*text != '\0')) { IAnjutaDebuggerVariableObject var = {NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, -1}; var.expression = text; debug_tree_add_watch (tree, &var, TRUE); } } }