[sysprof] libsysprof-ui: hide callgraph when no data is present
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [sysprof] libsysprof-ui: hide callgraph when no data is present
- Date: Wed, 29 May 2019 22:29:10 +0000 (UTC)
commit 89293254c5e0f119ab250901b9f30d1969f7dce2
Author: Christian Hergert <chergert redhat com>
Date: Wed May 15 16:53:11 2019 -0700
libsysprof-ui: hide callgraph when no data is present
src/libsysprof-ui/sysprof-callgraph-view.c | 17 +-
src/libsysprof-ui/ui/sysprof-callgraph-view.ui | 230 +++++++++++++------------
2 files changed, 137 insertions(+), 110 deletions(-)
---
diff --git a/src/libsysprof-ui/sysprof-callgraph-view.c b/src/libsysprof-ui/sysprof-callgraph-view.c
index de9b55b..27f848d 100644
--- a/src/libsysprof-ui/sysprof-callgraph-view.c
+++ b/src/libsysprof-ui/sysprof-callgraph-view.c
@@ -54,6 +54,7 @@ typedef struct
GtkTreeView *functions_view;
GtkTreeView *descendants_view;
GtkTreeViewColumn *descendants_name_column;
+ GtkStack *stack;
GQueue *history;
@@ -149,7 +150,7 @@ build_functions_store (StackNode *node,
static void
sysprof_callgraph_view_load (SysprofCallgraphView *self,
- SysprofCallgraphProfile *profile)
+ SysprofCallgraphProfile *profile)
{
SysprofCallgraphViewPrivate *priv = sysprof_callgraph_view_get_instance_private (self);
GtkListStore *functions;
@@ -173,9 +174,10 @@ sysprof_callgraph_view_load (SysprofCallgraphView *self,
* insensitive and give some indication of loading progress.
*/
- g_set_object (&priv->profile, profile);
+ if (!g_set_object (&priv->profile, profile))
+ return;
- if (NULL == (stash = sysprof_callgraph_profile_get_stash (profile)))
+ if (!(stash = sysprof_callgraph_profile_get_stash (profile)))
return;
for (n = stack_stash_get_root (stash); n; n = n->siblings)
@@ -202,6 +204,8 @@ sysprof_callgraph_view_load (SysprofCallgraphView *self,
gtk_tree_selection_select_iter (selection, &iter);
}
+ gtk_stack_set_visible_child_name (priv->stack, "callgraph");
+
g_clear_object (&functions);
}
@@ -220,6 +224,8 @@ sysprof_callgraph_view_unload (SysprofCallgraphView *self)
gtk_tree_view_set_model (priv->callers_view, NULL);
gtk_tree_view_set_model (priv->functions_view, NULL);
gtk_tree_view_set_model (priv->descendants_view, NULL);
+
+ gtk_stack_set_visible_child_name (priv->stack, "empty-state");
}
/**
@@ -239,7 +245,7 @@ sysprof_callgraph_view_get_profile (SysprofCallgraphView *self)
void
sysprof_callgraph_view_set_profile (SysprofCallgraphView *self,
- SysprofCallgraphProfile *profile)
+ SysprofCallgraphProfile *profile)
{
SysprofCallgraphViewPrivate *priv = sysprof_callgraph_view_get_instance_private (self);
@@ -758,6 +764,7 @@ sysprof_callgraph_view_class_init (SysprofCallgraphViewClass *klass)
gtk_widget_class_bind_template_child_private (widget_class, SysprofCallgraphView, functions_view);
gtk_widget_class_bind_template_child_private (widget_class, SysprofCallgraphView, descendants_view);
gtk_widget_class_bind_template_child_private (widget_class, SysprofCallgraphView, descendants_name_column);
+ gtk_widget_class_bind_template_child_private (widget_class, SysprofCallgraphView, stack);
bindings = gtk_binding_set_by_class (klass);
gtk_binding_entry_add_signal (bindings, GDK_KEY_Left, GDK_MOD1_MASK, "go-previous", 0);
@@ -776,6 +783,8 @@ sysprof_callgraph_view_init (SysprofCallgraphView *self)
gtk_widget_init_template (GTK_WIDGET (self));
+ gtk_stack_set_visible_child_name (priv->stack, "empty-state");
+
selection = gtk_tree_view_get_selection (priv->functions_view);
g_signal_connect_object (selection,
diff --git a/src/libsysprof-ui/ui/sysprof-callgraph-view.ui b/src/libsysprof-ui/ui/sysprof-callgraph-view.ui
index f130496..a8b9778 100644
--- a/src/libsysprof-ui/ui/sysprof-callgraph-view.ui
+++ b/src/libsysprof-ui/ui/sysprof-callgraph-view.ui
@@ -1,100 +1,158 @@
<interface>
<template class="SysprofCallgraphView" parent="GtkBin">
<child>
- <object class="GtkPaned">
- <property name="orientation">horizontal</property>
- <property name="position">450</property>
+ <object class="GtkStack" id="stack">
<property name="visible">true</property>
<child>
<object class="GtkPaned">
- <property name="orientation">vertical</property>
+ <property name="orientation">horizontal</property>
+ <property name="position">450</property>
<property name="visible">true</property>
<child>
- <object class="GtkScrolledWindow">
+ <object class="GtkPaned">
+ <property name="orientation">vertical</property>
<property name="visible">true</property>
<child>
- <object class="GtkTreeView" id="functions_view">
- <property name="fixed-height-mode">true</property>
+ <object class="GtkScrolledWindow">
<property name="visible">true</property>
<child>
- <object class="GtkTreeViewColumn" id="function_name_column">
- <property name="expand">true</property>
- <property name="sizing">fixed</property>
- <property name="sort-column-id">0</property>
- <property name="title" translatable="yes">Functions</property>
+ <object class="GtkTreeView" id="functions_view">
+ <property name="fixed-height-mode">true</property>
+ <property name="visible">true</property>
<child>
- <object class="GtkCellRendererText">
- <property name="ellipsize">middle</property>
+ <object class="GtkTreeViewColumn" id="function_name_column">
+ <property name="expand">true</property>
+ <property name="sizing">fixed</property>
+ <property name="sort-column-id">0</property>
+ <property name="title" translatable="yes">Functions</property>
+ <child>
+ <object class="GtkCellRendererText">
+ <property name="ellipsize">middle</property>
+ </object>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
</object>
- <attributes>
- <attribute name="text">0</attribute>
- </attributes>
</child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="function_self_column">
- <property name="expand">false</property>
- <property name="sizing">fixed</property>
- <property name="sort-column-id">1</property>
- <property name="title" translatable="yes">Self</property>
<child>
- <object class="SysprofCellRendererPercent">
- <property name="xpad">6</property>
+ <object class="GtkTreeViewColumn" id="function_self_column">
+ <property name="expand">false</property>
+ <property name="sizing">fixed</property>
+ <property name="sort-column-id">1</property>
+ <property name="title" translatable="yes">Self</property>
+ <child>
+ <object class="SysprofCellRendererPercent">
+ <property name="xpad">6</property>
+ </object>
+ <attributes>
+ <attribute name="percent">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="function_total_column">
+ <property name="expand">false</property>
+ <property name="sizing">fixed</property>
+ <property name="sort-column-id">2</property>
+ <property name="title" translatable="yes">Total</property>
+ <child>
+ <object class="SysprofCellRendererPercent">
+ <property name="xpad">6</property>
+ </object>
+ <attributes>
+ <attribute name="percent">2</attribute>
+ </attributes>
+ </child>
</object>
- <attributes>
- <attribute name="percent">1</attribute>
- </attributes>
</child>
</object>
</child>
+ </object>
+ <packing>
+ <property name="resize">true</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">true</property>
<child>
- <object class="GtkTreeViewColumn" id="function_total_column">
- <property name="expand">false</property>
- <property name="sizing">fixed</property>
- <property name="sort-column-id">2</property>
- <property name="title" translatable="yes">Total</property>
+ <object class="GtkTreeView" id="callers_view">
+ <property name="visible">true</property>
<child>
- <object class="SysprofCellRendererPercent">
- <property name="xpad">6</property>
+ <object class="GtkTreeViewColumn" id="callers_name_column">
+ <property name="expand">true</property>
+ <property name="sizing">fixed</property>
+ <property name="sort-column-id">0</property>
+ <property name="title" translatable="yes">Callers</property>
+ <child>
+ <object class="GtkCellRendererText">
+ <property name="ellipsize">middle</property>
+ </object>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="callers_self_column">
+ <property name="expand">false</property>
+ <property name="sizing">fixed</property>
+ <property name="sort-column-id">1</property>
+ <property name="title" translatable="yes">Self</property>
+ <child>
+ <object class="SysprofCellRendererPercent">
+ <property name="xpad">6</property>
+ </object>
+ <attributes>
+ <attribute name="percent">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="callers_total_column">
+ <property name="expand">false</property>
+ <property name="sizing">fixed</property>
+ <property name="sort-column-id">2</property>
+ <property name="title" translatable="yes">Total</property>
+ <child>
+ <object class="SysprofCellRendererPercent">
+ <property name="xpad">6</property>
+ </object>
+ <attributes>
+ <attribute name="percent">2</attribute>
+ </attributes>
+ </child>
</object>
- <attributes>
- <attribute name="percent">2</attribute>
- </attributes>
</child>
</object>
</child>
</object>
+ <packing>
+ <property name="resize">true</property>
+ </packing>
</child>
</object>
- <packing>
- <property name="resize">true</property>
- </packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">true</property>
<child>
- <object class="GtkTreeView" id="callers_view">
+ <object class="GtkTreeView" id="descendants_view">
<property name="visible">true</property>
<child>
- <object class="GtkTreeViewColumn" id="callers_name_column">
+ <object class="GtkTreeViewColumn" id="descendants_name_column">
<property name="expand">true</property>
<property name="sizing">fixed</property>
<property name="sort-column-id">0</property>
- <property name="title" translatable="yes">Callers</property>
- <child>
- <object class="GtkCellRendererText">
- <property name="ellipsize">middle</property>
- </object>
- <attributes>
- <attribute name="text">0</attribute>
- </attributes>
- </child>
+ <property name="title" translatable="yes">Descendants</property>
</object>
</child>
<child>
- <object class="GtkTreeViewColumn" id="callers_self_column">
+ <object class="GtkTreeViewColumn" id="descendants_self_column">
<property name="expand">false</property>
<property name="sizing">fixed</property>
<property name="sort-column-id">1</property>
@@ -110,11 +168,11 @@
</object>
</child>
<child>
- <object class="GtkTreeViewColumn" id="callers_total_column">
+ <object class="GtkTreeViewColumn" id="descendants_total_column">
<property name="expand">false</property>
<property name="sizing">fixed</property>
<property name="sort-column-id">2</property>
- <property name="title" translatable="yes">Total</property>
+ <property name="title" translatable="yes">Cumulative</property>
<child>
<object class="SysprofCellRendererPercent">
<property name="xpad">6</property>
@@ -128,61 +186,21 @@
</object>
</child>
</object>
- <packing>
- <property name="resize">true</property>
- </packing>
</child>
</object>
+ <packing>
+ <property name="name">callgraph</property>
+ </packing>
</child>
<child>
- <object class="GtkScrolledWindow">
+ <object class="SysprofEmptyStateView">
+ <property name="title" translatable="yes">Not Enough Samples</property>
+ <property name="subtitle" translatable="yes">More samples are necessary to display a
callgraph.</property>
<property name="visible">true</property>
- <child>
- <object class="GtkTreeView" id="descendants_view">
- <property name="visible">true</property>
- <child>
- <object class="GtkTreeViewColumn" id="descendants_name_column">
- <property name="expand">true</property>
- <property name="sizing">fixed</property>
- <property name="sort-column-id">0</property>
- <property name="title" translatable="yes">Descendants</property>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="descendants_self_column">
- <property name="expand">false</property>
- <property name="sizing">fixed</property>
- <property name="sort-column-id">1</property>
- <property name="title" translatable="yes">Self</property>
- <child>
- <object class="SysprofCellRendererPercent">
- <property name="xpad">6</property>
- </object>
- <attributes>
- <attribute name="percent">1</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="descendants_total_column">
- <property name="expand">false</property>
- <property name="sizing">fixed</property>
- <property name="sort-column-id">2</property>
- <property name="title" translatable="yes">Cumulative</property>
- <child>
- <object class="SysprofCellRendererPercent">
- <property name="xpad">6</property>
- </object>
- <attributes>
- <attribute name="percent">2</attribute>
- </attributes>
- </child>
- </object>
- </child>
- </object>
- </child>
</object>
+ <packing>
+ <property name="name">empty-state</property>
+ </packing>
</child>
</object>
</child>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]