mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-11 07:30:54 +00:00
Disable type-ahead search for all the tree views.
Sun Jun 12 20:30:37 2005 Soeren Sandmann <sandmann@redhat.com> * sysprof.c (build_gui): Disable type-ahead search for all the tree views. * sysprof.c (on_object_selection_changed): Call it from here * sysprof.c (expand_descendants_tree): New function that determines what nodes to expand in the descendatns view. * TODO
This commit is contained in:
committed by
Søren Sandmann Pedersen
parent
82a87202c1
commit
088a822edc
10
ChangeLog
10
ChangeLog
@ -1,3 +1,13 @@
|
|||||||
|
Sun Jun 12 20:30:37 2005 Soeren Sandmann <sandmann@redhat.com>
|
||||||
|
|
||||||
|
* sysprof.c (build_gui): Disable type-ahead search for all the
|
||||||
|
tree views.
|
||||||
|
|
||||||
|
* sysprof.c (on_object_selection_changed): Call it from here
|
||||||
|
|
||||||
|
* sysprof.c (expand_descendants_tree): New function that
|
||||||
|
determines what nodes to expand in the descendatns view.
|
||||||
|
|
||||||
Sun Jun 12 13:37:15 2005 Soeren Sandmann <sandmann@redhat.com>
|
Sun Jun 12 13:37:15 2005 Soeren Sandmann <sandmann@redhat.com>
|
||||||
|
|
||||||
* TODO: Updates
|
* TODO: Updates
|
||||||
|
|||||||
109
sysprof.c
109
sysprof.c
@ -1115,12 +1115,102 @@ on_delete (GtkWidget *window)
|
|||||||
gtk_main_quit ();
|
gtk_main_quit ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
expand_descendants_tree (Application *app)
|
||||||
|
{
|
||||||
|
GtkTreeModel *model = gtk_tree_view_get_model (app->descendants_view);
|
||||||
|
GtkTreeIter iter;
|
||||||
|
GList *all_paths = NULL;
|
||||||
|
int n_rows;
|
||||||
|
int max_rows = 40; /* FIXME */
|
||||||
|
double top_value = 0.0;
|
||||||
|
GtkTreePath *first_path;
|
||||||
|
GList *list;
|
||||||
|
|
||||||
|
first_path = gtk_tree_path_new_first();
|
||||||
|
|
||||||
|
all_paths = g_list_prepend (all_paths, first_path);
|
||||||
|
|
||||||
|
n_rows = 1;
|
||||||
|
|
||||||
|
gtk_tree_model_get_iter (model, &iter, first_path);
|
||||||
|
gtk_tree_model_get (model, &iter,
|
||||||
|
OBJECT_TOTAL, &top_value,
|
||||||
|
-1);
|
||||||
|
|
||||||
|
while (all_paths && n_rows < max_rows)
|
||||||
|
{
|
||||||
|
GtkTreeIter best_iter;
|
||||||
|
GtkTreePath *best_path;
|
||||||
|
double best_value;
|
||||||
|
int n_children;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
best_value = 0.0;
|
||||||
|
best_path = NULL;
|
||||||
|
|
||||||
|
for (list = all_paths; list != NULL; list = list->next)
|
||||||
|
{
|
||||||
|
GtkTreePath *path = list->data;
|
||||||
|
GtkTreeIter iter;
|
||||||
|
double value;
|
||||||
|
g_assert (path != NULL);
|
||||||
|
if (gtk_tree_model_get_iter (model, &iter, path))
|
||||||
|
{
|
||||||
|
gtk_tree_model_get (model, &iter,
|
||||||
|
OBJECT_TOTAL, &value,
|
||||||
|
-1);
|
||||||
|
}
|
||||||
|
if (value >= best_value)
|
||||||
|
{
|
||||||
|
best_value = value;
|
||||||
|
best_path = path;
|
||||||
|
|
||||||
|
gtk_tree_model_get_iter (model, &best_iter, path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gtk_tree_model_get_iter (model, &iter, best_path);
|
||||||
|
|
||||||
|
n_children = gtk_tree_model_iter_n_children (model, &best_iter);
|
||||||
|
|
||||||
|
if (n_children && (best_value / top_value) > 0.04 &&
|
||||||
|
(n_children + gtk_tree_path_get_depth (best_path)) / (double)max_rows < (best_value / top_value) )
|
||||||
|
{
|
||||||
|
gtk_tree_view_expand_row (GTK_TREE_VIEW (app->descendants_view), best_path, FALSE);
|
||||||
|
n_rows += n_children;
|
||||||
|
|
||||||
|
if (gtk_tree_path_get_depth (best_path) < 4)
|
||||||
|
{
|
||||||
|
GtkTreePath *path = gtk_tree_path_copy (best_path);
|
||||||
|
gtk_tree_path_down (path);
|
||||||
|
|
||||||
|
for (i = 0; i < n_children; ++i)
|
||||||
|
{
|
||||||
|
all_paths = g_list_prepend (all_paths, path);
|
||||||
|
|
||||||
|
path = gtk_tree_path_copy (path);
|
||||||
|
gtk_tree_path_next (path);
|
||||||
|
}
|
||||||
|
gtk_tree_path_free (path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
all_paths = g_list_remove (all_paths, best_path);
|
||||||
|
gtk_tree_path_free (best_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (list = all_paths; list != NULL; list = list->next)
|
||||||
|
gtk_tree_path_free (list->data);
|
||||||
|
|
||||||
|
g_list_free (all_paths);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
on_object_selection_changed (GtkTreeSelection *selection,
|
on_object_selection_changed (GtkTreeSelection *selection,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
Application *app = data;
|
Application *app = data;
|
||||||
GtkTreePath *path;
|
|
||||||
|
|
||||||
set_busy (app->main_window, TRUE);
|
set_busy (app->main_window, TRUE);
|
||||||
|
|
||||||
@ -1128,14 +1218,9 @@ on_object_selection_changed (GtkTreeSelection *selection,
|
|||||||
|
|
||||||
fill_descendants_tree (app);
|
fill_descendants_tree (app);
|
||||||
fill_callers_list (app);
|
fill_callers_list (app);
|
||||||
|
|
||||||
/* Expand the toplevel of the descendant tree so we see the immediate
|
if (get_current_object (app))
|
||||||
* descendants.
|
expand_descendants_tree (app);
|
||||||
*/
|
|
||||||
path = gtk_tree_path_new_from_indices (0, -1);
|
|
||||||
gtk_tree_view_expand_row (
|
|
||||||
GTK_TREE_VIEW (app->descendants_view), path, FALSE);
|
|
||||||
gtk_tree_path_free (path);
|
|
||||||
|
|
||||||
set_busy (app->main_window, FALSE);
|
set_busy (app->main_window, FALSE);
|
||||||
}
|
}
|
||||||
@ -1355,32 +1440,32 @@ build_gui (Application *app)
|
|||||||
|
|
||||||
/* object view */
|
/* object view */
|
||||||
app->object_view = (GtkTreeView *)glade_xml_get_widget (xml, "object_view");
|
app->object_view = (GtkTreeView *)glade_xml_get_widget (xml, "object_view");
|
||||||
|
gtk_tree_view_set_enable_search (app->object_view, FALSE);
|
||||||
col = add_plain_text_column (app->object_view, _("Functions"), OBJECT_NAME);
|
col = add_plain_text_column (app->object_view, _("Functions"), OBJECT_NAME);
|
||||||
add_double_format_column (app->object_view, _("Self"), OBJECT_SELF, "%.2f ");
|
add_double_format_column (app->object_view, _("Self"), OBJECT_SELF, "%.2f ");
|
||||||
add_double_format_column (app->object_view, _("Total"), OBJECT_TOTAL, "%.2f ");
|
add_double_format_column (app->object_view, _("Total"), OBJECT_TOTAL, "%.2f ");
|
||||||
selection = gtk_tree_view_get_selection (app->object_view);
|
selection = gtk_tree_view_get_selection (app->object_view);
|
||||||
g_signal_connect (selection, "changed", G_CALLBACK (on_object_selection_changed), app);
|
g_signal_connect (selection, "changed", G_CALLBACK (on_object_selection_changed), app);
|
||||||
|
|
||||||
gtk_tree_view_column_set_expand (col, TRUE);
|
gtk_tree_view_column_set_expand (col, TRUE);
|
||||||
|
|
||||||
/* callers view */
|
/* callers view */
|
||||||
app->callers_view = (GtkTreeView *)glade_xml_get_widget (xml, "callers_view");
|
app->callers_view = (GtkTreeView *)glade_xml_get_widget (xml, "callers_view");
|
||||||
|
gtk_tree_view_set_enable_search (app->callers_view, FALSE);
|
||||||
col = add_plain_text_column (app->callers_view, _("Callers"), CALLERS_NAME);
|
col = add_plain_text_column (app->callers_view, _("Callers"), CALLERS_NAME);
|
||||||
add_double_format_column (app->callers_view, _("Self"), CALLERS_SELF, "%.2f ");
|
add_double_format_column (app->callers_view, _("Self"), CALLERS_SELF, "%.2f ");
|
||||||
add_double_format_column (app->callers_view, _("Total"), CALLERS_TOTAL, "%.2f ");
|
add_double_format_column (app->callers_view, _("Total"), CALLERS_TOTAL, "%.2f ");
|
||||||
g_signal_connect (app->callers_view, "row-activated",
|
g_signal_connect (app->callers_view, "row-activated",
|
||||||
G_CALLBACK (on_callers_row_activated), app);
|
G_CALLBACK (on_callers_row_activated), app);
|
||||||
|
|
||||||
gtk_tree_view_column_set_expand (col, TRUE);
|
gtk_tree_view_column_set_expand (col, TRUE);
|
||||||
|
|
||||||
/* descendants view */
|
/* descendants view */
|
||||||
app->descendants_view = (GtkTreeView *)glade_xml_get_widget (xml, "descendants_view");
|
app->descendants_view = (GtkTreeView *)glade_xml_get_widget (xml, "descendants_view");
|
||||||
|
gtk_tree_view_set_enable_search (app->descendants_view, FALSE);
|
||||||
col = add_plain_text_column (app->descendants_view, _("Descendants"), DESCENDANTS_NAME);
|
col = add_plain_text_column (app->descendants_view, _("Descendants"), DESCENDANTS_NAME);
|
||||||
add_double_format_column (app->descendants_view, _("Self"), DESCENDANTS_SELF, "%.2f ");
|
add_double_format_column (app->descendants_view, _("Self"), DESCENDANTS_SELF, "%.2f ");
|
||||||
add_double_format_column (app->descendants_view, _("Cumulative"), DESCENDANTS_NON_RECURSE, "%.2f ");
|
add_double_format_column (app->descendants_view, _("Cumulative"), DESCENDANTS_NON_RECURSE, "%.2f ");
|
||||||
g_signal_connect (app->descendants_view, "row-activated",
|
g_signal_connect (app->descendants_view, "row-activated",
|
||||||
G_CALLBACK (on_descendants_row_activated), app);
|
G_CALLBACK (on_descendants_row_activated), app);
|
||||||
|
|
||||||
gtk_tree_view_column_set_expand (col, TRUE);
|
gtk_tree_view_column_set_expand (col, TRUE);
|
||||||
|
|
||||||
gtk_widget_grab_focus (GTK_WIDGET (app->object_view));
|
gtk_widget_grab_focus (GTK_WIDGET (app->object_view));
|
||||||
|
|||||||
Reference in New Issue
Block a user