mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-10 15:10:53 +00:00
sysprof: allow filtering functions
This commit is contained in:
@ -46,6 +46,7 @@ struct _SysprofCallgraphView
|
|||||||
GtkCustomSorter *functions_name_sorter;
|
GtkCustomSorter *functions_name_sorter;
|
||||||
GtkScrolledWindow *scrolled_window;
|
GtkScrolledWindow *scrolled_window;
|
||||||
GtkWidget *paned;
|
GtkWidget *paned;
|
||||||
|
GtkStringFilter *function_filter;
|
||||||
|
|
||||||
GCancellable *cancellable;
|
GCancellable *cancellable;
|
||||||
|
|
||||||
|
|||||||
@ -514,6 +514,7 @@ sysprof_callgraph_view_class_init (SysprofCallgraphViewClass *klass)
|
|||||||
gtk_widget_class_bind_template_child (widget_class, SysprofCallgraphView, descendants_name_sorter);
|
gtk_widget_class_bind_template_child (widget_class, SysprofCallgraphView, descendants_name_sorter);
|
||||||
gtk_widget_class_bind_template_child (widget_class, SysprofCallgraphView, functions_column_view);
|
gtk_widget_class_bind_template_child (widget_class, SysprofCallgraphView, functions_column_view);
|
||||||
gtk_widget_class_bind_template_child (widget_class, SysprofCallgraphView, functions_name_sorter);
|
gtk_widget_class_bind_template_child (widget_class, SysprofCallgraphView, functions_name_sorter);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, SysprofCallgraphView, function_filter);
|
||||||
gtk_widget_class_bind_template_child (widget_class, SysprofCallgraphView, paned);
|
gtk_widget_class_bind_template_child (widget_class, SysprofCallgraphView, paned);
|
||||||
|
|
||||||
gtk_widget_class_install_action (widget_class, "callgraph.make-descendant-root", NULL, make_descendant_root_action);
|
gtk_widget_class_install_action (widget_class, "callgraph.make-descendant-root", NULL, make_descendant_root_action);
|
||||||
@ -523,6 +524,7 @@ sysprof_callgraph_view_class_init (SysprofCallgraphViewClass *klass)
|
|||||||
g_resources_register (sysprof_get_resource ());
|
g_resources_register (sysprof_get_resource ());
|
||||||
|
|
||||||
g_type_ensure (PANEL_TYPE_PANED);
|
g_type_ensure (PANEL_TYPE_PANED);
|
||||||
|
g_type_ensure (SYSPROF_TYPE_CALLGRAPH_SYMBOL);
|
||||||
g_type_ensure (SYSPROF_TYPE_CATEGORY_ICON);
|
g_type_ensure (SYSPROF_TYPE_CATEGORY_ICON);
|
||||||
g_type_ensure (SYSPROF_TYPE_SYMBOL_LABEL);
|
g_type_ensure (SYSPROF_TYPE_SYMBOL_LABEL);
|
||||||
g_type_ensure (SYSPROF_TYPE_TREE_EXPANDER);
|
g_type_ensure (SYSPROF_TYPE_TREE_EXPANDER);
|
||||||
@ -589,6 +591,7 @@ sysprof_callgraph_view_reload_cb (GObject *object,
|
|||||||
{
|
{
|
||||||
SysprofDocument *document = (SysprofDocument *)object;
|
SysprofDocument *document = (SysprofDocument *)object;
|
||||||
g_autoptr(SysprofCallgraphView) self = user_data;
|
g_autoptr(SysprofCallgraphView) self = user_data;
|
||||||
|
g_autoptr(GtkFilterListModel) filter_model = NULL;
|
||||||
g_autoptr(SysprofCallgraph) callgraph = NULL;
|
g_autoptr(SysprofCallgraph) callgraph = NULL;
|
||||||
g_autoptr(GError) error = NULL;
|
g_autoptr(GError) error = NULL;
|
||||||
GtkSorter *column_sorter;
|
GtkSorter *column_sorter;
|
||||||
@ -613,7 +616,10 @@ sysprof_callgraph_view_reload_cb (GObject *object,
|
|||||||
|
|
||||||
column_sorter = gtk_column_view_get_sorter (self->functions_column_view);
|
column_sorter = gtk_column_view_get_sorter (self->functions_column_view);
|
||||||
functions_model = sysprof_callgraph_list_symbols (callgraph);
|
functions_model = sysprof_callgraph_list_symbols (callgraph);
|
||||||
functions_sort_model = gtk_sort_list_model_new (g_object_ref (functions_model),
|
filter_model = gtk_filter_list_model_new (g_object_ref (G_LIST_MODEL (functions_model)),
|
||||||
|
g_object_ref (GTK_FILTER (self->function_filter)));
|
||||||
|
gtk_filter_list_model_set_incremental (filter_model, TRUE);
|
||||||
|
functions_sort_model = gtk_sort_list_model_new (g_object_ref (G_LIST_MODEL (filter_model)),
|
||||||
g_object_ref (column_sorter));
|
g_object_ref (column_sorter));
|
||||||
functions_selection = gtk_single_selection_new (g_object_ref (G_LIST_MODEL (functions_sort_model)));
|
functions_selection = gtk_single_selection_new (g_object_ref (G_LIST_MODEL (functions_sort_model)));
|
||||||
gtk_single_selection_set_autoselect (functions_selection, FALSE);
|
gtk_single_selection_set_autoselect (functions_selection, FALSE);
|
||||||
|
|||||||
@ -7,23 +7,26 @@
|
|||||||
<object class="PanelPaned">
|
<object class="PanelPaned">
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkScrolledWindow" id="functions_scrolled_window">
|
<object class="GtkBox">
|
||||||
<property name="vexpand">true</property>
|
<property name="orientation">vertical</property>
|
||||||
<property name="propagate-natural-width">true</property>
|
|
||||||
<property name="hscrollbar-policy">never</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkColumnView" id="functions_column_view">
|
<object class="GtkScrolledWindow" id="functions_scrolled_window">
|
||||||
|
<property name="vexpand">true</property>
|
||||||
|
<property name="propagate-natural-width">true</property>
|
||||||
|
<property name="hscrollbar-policy">never</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkColumnViewColumn" id="functions_name_column">
|
<object class="GtkColumnView" id="functions_column_view">
|
||||||
<property name="title" translatable="yes">Functions</property>
|
<child>
|
||||||
<property name="expand">true</property>
|
<object class="GtkColumnViewColumn" id="functions_name_column">
|
||||||
<property name="sorter">
|
<property name="title" translatable="yes">Functions</property>
|
||||||
<object class="GtkCustomSorter" id="functions_name_sorter">
|
<property name="expand">true</property>
|
||||||
</object>
|
<property name="sorter">
|
||||||
</property>
|
<object class="GtkCustomSorter" id="functions_name_sorter">
|
||||||
<property name="factory">
|
</object>
|
||||||
<object class="GtkBuilderListItemFactory">
|
</property>
|
||||||
<property name="bytes"><![CDATA[
|
<property name="factory">
|
||||||
|
<object class="GtkBuilderListItemFactory">
|
||||||
|
<property name="bytes"><![CDATA[
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<interface>
|
<interface>
|
||||||
<template class="GtkListItem">
|
<template class="GtkListItem">
|
||||||
@ -50,9 +53,26 @@
|
|||||||
</property>
|
</property>
|
||||||
</template>
|
</template>
|
||||||
</interface>
|
</interface>
|
||||||
]]></property>
|
]]>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<child>
|
||||||
|
<object class="GtkSearchEntry" id="filter_search_entry">
|
||||||
|
<property name="placeholder-text" translatable="yes">Filter Functions</property>
|
||||||
|
<property name="margin-top">3</property>
|
||||||
|
<property name="margin-bottom">3</property>
|
||||||
|
<property name="margin-start">3</property>
|
||||||
|
<property name="margin-end">3</property>
|
||||||
|
<property name="hexpand">true</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
@ -265,4 +285,15 @@
|
|||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</template>
|
</template>
|
||||||
|
<object class="GtkStringFilter" id="function_filter">
|
||||||
|
<property name="match-mode">substring</property>
|
||||||
|
<property name="expression">
|
||||||
|
<lookup name="name" type="SysprofSymbol">
|
||||||
|
<lookup name="symbol" type="SysprofCallgraphSymbol"/>
|
||||||
|
</lookup>
|
||||||
|
</property>
|
||||||
|
<binding name="search">
|
||||||
|
<lookup name="text">filter_search_entry</lookup>
|
||||||
|
</binding>
|
||||||
|
</object>
|
||||||
</interface>
|
</interface>
|
||||||
|
|||||||
Reference in New Issue
Block a user