mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2025-12-31 20:36:25 +00:00
sysprof: use layer factories to create charts
This commit is contained in:
@ -41,70 +41,6 @@ struct _SysprofCpuSection
|
|||||||
|
|
||||||
G_DEFINE_FINAL_TYPE (SysprofCpuSection, sysprof_cpu_section, SYSPROF_TYPE_SECTION)
|
G_DEFINE_FINAL_TYPE (SysprofCpuSection, sysprof_cpu_section, SYSPROF_TYPE_SECTION)
|
||||||
|
|
||||||
static GtkWidget *
|
|
||||||
create_counter_chart (SysprofDocumentCounter *counter,
|
|
||||||
SysprofAxis *x_axis)
|
|
||||||
{
|
|
||||||
g_autoptr(SysprofValueAxis) y_axis = NULL;
|
|
||||||
g_autoptr(SysprofSeries) series = NULL;
|
|
||||||
SysprofChartLayer *layer;
|
|
||||||
SysprofChart *chart;
|
|
||||||
|
|
||||||
g_assert (SYSPROF_IS_DOCUMENT_COUNTER (counter));
|
|
||||||
|
|
||||||
series = sysprof_xy_series_new (NULL,
|
|
||||||
g_object_ref (G_LIST_MODEL (counter)),
|
|
||||||
gtk_property_expression_new (SYSPROF_TYPE_DOCUMENT_COUNTER_VALUE, NULL, "time"),
|
|
||||||
gtk_property_expression_new (SYSPROF_TYPE_DOCUMENT_COUNTER_VALUE, NULL, "value-double"));
|
|
||||||
y_axis = g_object_new (SYSPROF_TYPE_VALUE_AXIS,
|
|
||||||
"min-value", 0.,
|
|
||||||
"max-value", 100.,
|
|
||||||
NULL);
|
|
||||||
layer = g_object_new (SYSPROF_TYPE_LINE_LAYER,
|
|
||||||
"fill", TRUE,
|
|
||||||
"series", series,
|
|
||||||
"x-axis", x_axis,
|
|
||||||
"y-axis", y_axis,
|
|
||||||
"spline", TRUE,
|
|
||||||
NULL);
|
|
||||||
chart = g_object_new (SYSPROF_TYPE_CHART,
|
|
||||||
"height-request", 20,
|
|
||||||
NULL);
|
|
||||||
sysprof_chart_add_layer (chart, layer);
|
|
||||||
|
|
||||||
return GTK_WIDGET (chart);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
sysprof_cpu_section_session_set (SysprofSection *section,
|
|
||||||
SysprofSession *session)
|
|
||||||
{
|
|
||||||
SysprofCpuSection *self = (SysprofCpuSection *)section;
|
|
||||||
g_autoptr(SysprofDocumentCounter) combined_cpu_usage = NULL;
|
|
||||||
SysprofDocument *document;
|
|
||||||
SysprofAxis *x_axis;
|
|
||||||
|
|
||||||
g_assert (SYSPROF_IS_CPU_SECTION (self));
|
|
||||||
g_assert (!session || SYSPROF_IS_SESSION (session));
|
|
||||||
|
|
||||||
if (!session)
|
|
||||||
return;
|
|
||||||
|
|
||||||
document = sysprof_session_get_document (session);
|
|
||||||
x_axis = sysprof_session_get_visible_time_axis (session);
|
|
||||||
|
|
||||||
if ((combined_cpu_usage = sysprof_document_find_counter (document, "CPU Percent", "Combined")))
|
|
||||||
{
|
|
||||||
g_autoptr(SysprofTimeFilterModel) filter = sysprof_time_filter_model_new (NULL, NULL);
|
|
||||||
|
|
||||||
sysprof_time_filter_model_set_model (filter, G_LIST_MODEL (combined_cpu_usage));
|
|
||||||
g_object_bind_property (session, "visible-time", filter, "time-span", G_BINDING_SYNC_CREATE);
|
|
||||||
|
|
||||||
sysprof_time_scrubber_add_chart (self->scrubber,
|
|
||||||
create_counter_chart (combined_cpu_usage, x_axis));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
sysprof_cpu_section_dispose (GObject *object)
|
sysprof_cpu_section_dispose (GObject *object)
|
||||||
{
|
{
|
||||||
@ -120,12 +56,9 @@ sysprof_cpu_section_class_init (SysprofCpuSectionClass *klass)
|
|||||||
{
|
{
|
||||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||||
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
|
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
|
||||||
SysprofSectionClass *section_class = SYSPROF_SECTION_CLASS (klass);
|
|
||||||
|
|
||||||
object_class->dispose = sysprof_cpu_section_dispose;
|
object_class->dispose = sysprof_cpu_section_dispose;
|
||||||
|
|
||||||
section_class->session_set = sysprof_cpu_section_session_set;
|
|
||||||
|
|
||||||
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/sysprof/sysprof-cpu-section.ui");
|
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/sysprof/sysprof-cpu-section.ui");
|
||||||
gtk_widget_class_bind_template_child (widget_class, SysprofCpuSection, column_view);
|
gtk_widget_class_bind_template_child (widget_class, SysprofCpuSection, column_view);
|
||||||
gtk_widget_class_bind_template_child (widget_class, SysprofCpuSection, scrubber);
|
gtk_widget_class_bind_template_child (widget_class, SysprofCpuSection, scrubber);
|
||||||
|
|||||||
@ -9,6 +9,150 @@
|
|||||||
<binding name="session">
|
<binding name="session">
|
||||||
<lookup name="session">SysprofCpuSection</lookup>
|
<lookup name="session">SysprofCpuSection</lookup>
|
||||||
</binding>
|
</binding>
|
||||||
|
<child type="chart">
|
||||||
|
<object class="SysprofChart">
|
||||||
|
<binding name="session">
|
||||||
|
<lookup name="session">SysprofCpuSection</lookup>
|
||||||
|
</binding>
|
||||||
|
<property name="height-request">32</property>
|
||||||
|
<property name="model">
|
||||||
|
<object class="GtkFilterListModel">
|
||||||
|
<binding name="model">
|
||||||
|
<lookup name="counters" type="SysprofDocument">
|
||||||
|
<lookup name="document" type="SysprofSession">
|
||||||
|
<lookup name="session">SysprofCpuSection</lookup>
|
||||||
|
</lookup>
|
||||||
|
</lookup>
|
||||||
|
</binding>
|
||||||
|
<property name="filter">
|
||||||
|
<object class="GtkStringFilter">
|
||||||
|
<property name="match-mode">exact</property>
|
||||||
|
<property name="search">CPU Percent/Combined</property>
|
||||||
|
<property name="expression">
|
||||||
|
<lookup name="key" type="SysprofDocumentCounter"/>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
<property name="factory">
|
||||||
|
<object class="SysprofChartLayerFactory">
|
||||||
|
<property name="bytes"><![CDATA[
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<interface>
|
||||||
|
<template class="SysprofChartLayerItem">
|
||||||
|
<property name="layer">
|
||||||
|
<object class="SysprofLineLayer" id="layer">
|
||||||
|
<property name="spline">true</property>
|
||||||
|
<property name="fill">true</property>
|
||||||
|
<binding name="x-axis">
|
||||||
|
<lookup name="visible-time-axis" type="SysprofSession">
|
||||||
|
<lookup name="session" type="SysprofChart">
|
||||||
|
<lookup name="chart">layer</lookup>
|
||||||
|
</lookup>
|
||||||
|
</lookup>
|
||||||
|
</binding>
|
||||||
|
<property name="y-axis">
|
||||||
|
<object class="SysprofValueAxis">
|
||||||
|
<property name="min-value">0</property>
|
||||||
|
<property name="max-value">100</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
<property name="series">
|
||||||
|
<object class="SysprofXYSeries">
|
||||||
|
<binding name="model">
|
||||||
|
<lookup name="item">SysprofChartLayerItem</lookup>
|
||||||
|
</binding>
|
||||||
|
<property name="x-expression">
|
||||||
|
<lookup name="time" type="SysprofDocumentCounterValue"/>
|
||||||
|
</property>
|
||||||
|
<property name="y-expression">
|
||||||
|
<lookup name="value-double" type="SysprofDocumentCounterValue"/>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</template>
|
||||||
|
</interface>
|
||||||
|
]]>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child type="chart">
|
||||||
|
<object class="SysprofChart">
|
||||||
|
<binding name="session">
|
||||||
|
<lookup name="session">SysprofCpuSection</lookup>
|
||||||
|
</binding>
|
||||||
|
<property name="height-request">32</property>
|
||||||
|
<property name="model">
|
||||||
|
<object class="GtkFilterListModel">
|
||||||
|
<binding name="model">
|
||||||
|
<lookup name="counters" type="SysprofDocument">
|
||||||
|
<lookup name="document" type="SysprofSession">
|
||||||
|
<lookup name="session">SysprofCpuSection</lookup>
|
||||||
|
</lookup>
|
||||||
|
</lookup>
|
||||||
|
</binding>
|
||||||
|
<property name="filter">
|
||||||
|
<object class="GtkStringFilter">
|
||||||
|
<property name="match-mode">exact</property>
|
||||||
|
<property name="search">CPU Frequency</property>
|
||||||
|
<property name="expression">
|
||||||
|
<lookup name="category" type="SysprofDocumentCounter"/>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
<property name="factory">
|
||||||
|
<object class="SysprofChartLayerFactory">
|
||||||
|
<property name="bytes"><![CDATA[
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<interface>
|
||||||
|
<template class="SysprofChartLayerItem">
|
||||||
|
<property name="layer">
|
||||||
|
<object class="SysprofLineLayer" id="layer">
|
||||||
|
<property name="dashed">true</property>
|
||||||
|
<property name="spline">true</property>
|
||||||
|
<binding name="x-axis">
|
||||||
|
<lookup name="visible-time-axis" type="SysprofSession">
|
||||||
|
<lookup name="session" type="SysprofChart">
|
||||||
|
<lookup name="chart">layer</lookup>
|
||||||
|
</lookup>
|
||||||
|
</lookup>
|
||||||
|
</binding>
|
||||||
|
<property name="y-axis">
|
||||||
|
<object class="SysprofValueAxis">
|
||||||
|
<property name="min-value">0</property>
|
||||||
|
<property name="max-value">100</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
<property name="series">
|
||||||
|
<object class="SysprofXYSeries">
|
||||||
|
<binding name="model">
|
||||||
|
<lookup name="item">SysprofChartLayerItem</lookup>
|
||||||
|
</binding>
|
||||||
|
<property name="x-expression">
|
||||||
|
<lookup name="time" type="SysprofDocumentCounterValue"/>
|
||||||
|
</property>
|
||||||
|
<property name="y-expression">
|
||||||
|
<lookup name="value-double" type="SysprofDocumentCounterValue"/>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</template>
|
||||||
|
</interface>
|
||||||
|
]]>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
|
|||||||
Reference in New Issue
Block a user