libsysprof-ui: add empty state for timing data

This commit is contained in:
Christian Hergert
2019-05-15 19:34:54 -07:00
parent c1d972d0c5
commit e3245c3c3b
3 changed files with 90 additions and 67 deletions

View File

@ -434,8 +434,6 @@ sysprof_capture_view_load_scan_cb (GObject *object,
if (priv->features.has_counters || priv->features.has_marks) if (priv->features.has_counters || priv->features.has_marks)
sysprof_visualizer_view_set_reader (priv->visualizer_view, state->reader); sysprof_visualizer_view_set_reader (priv->visualizer_view, state->reader);
if (priv->features.has_marks)
{
state->n_active++; state->n_active++;
sysprof_marks_view_load_async (priv->marks_view, sysprof_marks_view_load_async (priv->marks_view,
state->reader, state->reader,
@ -443,7 +441,6 @@ sysprof_capture_view_load_scan_cb (GObject *object,
g_task_get_cancellable (task), g_task_get_cancellable (task),
sysprof_capture_view_load_marks_cb, sysprof_capture_view_load_marks_cb,
g_object_ref (task)); g_object_ref (task));
}
sysprof_details_view_set_reader (priv->details_view, priv->reader); sysprof_details_view_set_reader (priv->details_view, priv->reader);

View File

@ -39,6 +39,7 @@ typedef struct
GtkTreeView *tree_view; GtkTreeView *tree_view;
GtkTreeViewColumn *duration_column; GtkTreeViewColumn *duration_column;
SysprofCellRendererDuration *duration_cell; SysprofCellRendererDuration *duration_cell;
GtkStack *stack;
} SysprofMarksViewPrivate; } SysprofMarksViewPrivate;
enum { enum {
@ -216,6 +217,7 @@ sysprof_marks_view_class_init (SysprofMarksViewClass *klass)
gtk_widget_class_bind_template_child_private (widget_class, SysprofMarksView, tree_view); gtk_widget_class_bind_template_child_private (widget_class, SysprofMarksView, tree_view);
gtk_widget_class_bind_template_child_private (widget_class, SysprofMarksView, duration_cell); gtk_widget_class_bind_template_child_private (widget_class, SysprofMarksView, duration_cell);
gtk_widget_class_bind_template_child_private (widget_class, SysprofMarksView, duration_column); gtk_widget_class_bind_template_child_private (widget_class, SysprofMarksView, duration_column);
gtk_widget_class_bind_template_child_private (widget_class, SysprofMarksView, stack);
properties [PROP_ZOOM_MANAGER] = properties [PROP_ZOOM_MANAGER] =
g_param_spec_object ("zoom-manager", NULL, NULL, g_param_spec_object ("zoom-manager", NULL, NULL,
@ -291,6 +293,11 @@ sysprof_marks_view_load_cb (GObject *object,
gtk_tree_view_set_model (priv->tree_view, GTK_TREE_MODEL (model)); gtk_tree_view_set_model (priv->tree_view, GTK_TREE_MODEL (model));
if (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (model), NULL) == 0)
gtk_stack_set_visible_child_name (priv->stack, "empty-state");
else
gtk_stack_set_visible_child_name (priv->stack, "marks");
g_task_return_boolean (task, TRUE); g_task_return_boolean (task, TRUE);
} }

View File

@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<interface> <interface>
<template class="SysprofMarksView" parent="GtkBin"> <template class="SysprofMarksView" parent="GtkBin">
<child>
<object class="GtkStack" id="stack">
<property name="visible">true</property>
<child> <child>
<object class="GtkScrolledWindow" id="scroller"> <object class="GtkScrolledWindow" id="scroller">
<property name="visible">true</property> <property name="visible">true</property>
@ -80,6 +83,22 @@
</object> </object>
</child> </child>
</object> </object>
<packing>
<property name="name">marks</property>
</packing>
</child>
<child>
<object class="SysprofEmptyStateView">
<property name="icon-name">computer-fail-symbolic</property>
<property name="title" translatable="yes">No Timings Available</property>
<property name="subtitle" translatable="yes">No timing data was collected.</property>
<property name="visible">true</property>
</object>
<packing>
<property name="name">empty-state</property>
</packing>
</child>
</object>
</child> </child>
</template> </template>
</interface> </interface>