mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-12 08:00:53 +00:00
libsysprof-gtk: always show time for start column
But allow hiding it for the duration column.
This commit is contained in:
@ -66,6 +66,7 @@
|
|||||||
<template class="GtkListItem">
|
<template class="GtkListItem">
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="SysprofTimeLabel">
|
<object class="SysprofTimeLabel">
|
||||||
|
<property name="show-zero">false</property>
|
||||||
<binding name="duration">
|
<binding name="duration">
|
||||||
<lookup name="duration" type="SysprofDocumentMark">
|
<lookup name="duration" type="SysprofDocumentMark">
|
||||||
<lookup name="item">GtkListItem</lookup>
|
<lookup name="item">GtkListItem</lookup>
|
||||||
|
|||||||
@ -29,6 +29,9 @@ G_BEGIN_DECLS
|
|||||||
G_DECLARE_FINAL_TYPE (SysprofTimeLabel, sysprof_time_label, SYSPROF, TIME_LABEL, GtkWidget)
|
G_DECLARE_FINAL_TYPE (SysprofTimeLabel, sysprof_time_label, SYSPROF, TIME_LABEL, GtkWidget)
|
||||||
|
|
||||||
GtkWidget *sysprof_time_label_new (void);
|
GtkWidget *sysprof_time_label_new (void);
|
||||||
|
gboolean sysprof_time_label_get_show_zero (SysprofTimeLabel *self);
|
||||||
|
void sysprof_time_label_set_show_zero (SysprofTimeLabel *self,
|
||||||
|
gboolean show_zero);
|
||||||
gint64 sysprof_time_label_get_duration (SysprofTimeLabel *self);
|
gint64 sysprof_time_label_get_duration (SysprofTimeLabel *self);
|
||||||
void sysprof_time_label_set_duration (SysprofTimeLabel *self,
|
void sysprof_time_label_set_duration (SysprofTimeLabel *self,
|
||||||
gint64 duration);
|
gint64 duration);
|
||||||
|
|||||||
@ -30,12 +30,14 @@ struct _SysprofTimeLabel
|
|||||||
GtkLabel *label;
|
GtkLabel *label;
|
||||||
gint64 t;
|
gint64 t;
|
||||||
guint mode : 1;
|
guint mode : 1;
|
||||||
|
guint show_zero : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_TIME_OFFSET,
|
|
||||||
PROP_DURATION,
|
PROP_DURATION,
|
||||||
|
PROP_TIME_OFFSET,
|
||||||
|
PROP_SHOW_ZERO,
|
||||||
N_PROPS
|
N_PROPS
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -76,6 +78,10 @@ sysprof_time_label_get_property (GObject *object,
|
|||||||
g_value_set_int64 (value, sysprof_time_label_get_duration (self));
|
g_value_set_int64 (value, sysprof_time_label_get_duration (self));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_SHOW_ZERO:
|
||||||
|
g_value_set_boolean (value, sysprof_time_label_get_show_zero (self));
|
||||||
|
break;
|
||||||
|
|
||||||
case PROP_TIME_OFFSET:
|
case PROP_TIME_OFFSET:
|
||||||
g_value_set_int64 (value, sysprof_time_label_get_time_offset (self));
|
g_value_set_int64 (value, sysprof_time_label_get_time_offset (self));
|
||||||
break;
|
break;
|
||||||
@ -99,6 +105,10 @@ sysprof_time_label_set_property (GObject *object,
|
|||||||
sysprof_time_label_set_duration (self, g_value_get_int64 (value));
|
sysprof_time_label_set_duration (self, g_value_get_int64 (value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_SHOW_ZERO:
|
||||||
|
sysprof_time_label_set_show_zero (self, g_value_get_boolean (value));
|
||||||
|
break;
|
||||||
|
|
||||||
case PROP_TIME_OFFSET:
|
case PROP_TIME_OFFSET:
|
||||||
sysprof_time_label_set_time_offset (self, g_value_get_int64 (value));
|
sysprof_time_label_set_time_offset (self, g_value_get_int64 (value));
|
||||||
break;
|
break;
|
||||||
@ -123,6 +133,11 @@ sysprof_time_label_class_init (SysprofTimeLabelClass *klass)
|
|||||||
G_MININT64, G_MAXINT64, 0,
|
G_MININT64, G_MAXINT64, 0,
|
||||||
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
|
properties[PROP_SHOW_ZERO] =
|
||||||
|
g_param_spec_boolean ("show-zero", NULL, NULL,
|
||||||
|
TRUE,
|
||||||
|
(G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
properties [PROP_TIME_OFFSET] =
|
properties [PROP_TIME_OFFSET] =
|
||||||
g_param_spec_int64 ("time-offset", NULL, NULL,
|
g_param_spec_int64 ("time-offset", NULL, NULL,
|
||||||
G_MININT64, G_MAXINT64, 0,
|
G_MININT64, G_MAXINT64, 0,
|
||||||
@ -138,11 +153,17 @@ static void
|
|||||||
sysprof_time_label_init (SysprofTimeLabel *self)
|
sysprof_time_label_init (SysprofTimeLabel *self)
|
||||||
{
|
{
|
||||||
static const char *css_classes[] = {"numeric", NULL};
|
static const char *css_classes[] = {"numeric", NULL};
|
||||||
|
char str[32];
|
||||||
|
|
||||||
|
self->show_zero = TRUE;
|
||||||
|
|
||||||
|
g_snprintf (str, sizeof str, "%.3lfs", .0);
|
||||||
|
|
||||||
self->label = g_object_new (GTK_TYPE_LABEL,
|
self->label = g_object_new (GTK_TYPE_LABEL,
|
||||||
"css-classes", css_classes,
|
"css-classes", css_classes,
|
||||||
"xalign", 1.f,
|
"xalign", 1.f,
|
||||||
"single-line-mode", TRUE,
|
"single-line-mode", TRUE,
|
||||||
|
"label", str,
|
||||||
NULL);
|
NULL);
|
||||||
gtk_widget_set_parent (GTK_WIDGET (self->label), GTK_WIDGET (self));
|
gtk_widget_set_parent (GTK_WIDGET (self->label), GTK_WIDGET (self));
|
||||||
}
|
}
|
||||||
@ -164,8 +185,10 @@ sysprof_time_label_set_internal (SysprofTimeLabel *self,
|
|||||||
{
|
{
|
||||||
char str[32];
|
char str[32];
|
||||||
|
|
||||||
if (t == 0)
|
if (t == 0 && !self->show_zero)
|
||||||
str[0] = 0;
|
str[0] = 0;
|
||||||
|
else if (t == 0)
|
||||||
|
g_snprintf (str, sizeof str, "%.3lfs", .0);
|
||||||
else if (t < 1000000)
|
else if (t < 1000000)
|
||||||
g_snprintf (str, sizeof str, "%.3lfμs", t/1000.);
|
g_snprintf (str, sizeof str, "%.3lfμs", t/1000.);
|
||||||
else if (t < SYSPROF_NSEC_PER_SEC)
|
else if (t < SYSPROF_NSEC_PER_SEC)
|
||||||
@ -215,3 +238,39 @@ sysprof_time_label_set_time_offset (SysprofTimeLabel *self,
|
|||||||
{
|
{
|
||||||
sysprof_time_label_set_internal (self, time_offset, MODE_TIME_OFFSET);
|
sysprof_time_label_set_internal (self, time_offset, MODE_TIME_OFFSET);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
sysprof_time_label_get_show_zero (SysprofTimeLabel *self)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (SYSPROF_IS_TIME_LABEL (self), FALSE);
|
||||||
|
|
||||||
|
return self->show_zero;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
sysprof_time_label_set_show_zero (SysprofTimeLabel *self,
|
||||||
|
gboolean show_zero)
|
||||||
|
{
|
||||||
|
g_return_if_fail (SYSPROF_IS_TIME_LABEL (self));
|
||||||
|
|
||||||
|
show_zero = !!show_zero;
|
||||||
|
|
||||||
|
if (self->show_zero != show_zero)
|
||||||
|
{
|
||||||
|
self->show_zero = show_zero;
|
||||||
|
|
||||||
|
if (self->t == 0)
|
||||||
|
{
|
||||||
|
char str[32];
|
||||||
|
|
||||||
|
g_snprintf (str, sizeof str, "%0.3lfs", .0);
|
||||||
|
|
||||||
|
if (show_zero)
|
||||||
|
gtk_label_set_label (self->label, str);
|
||||||
|
else
|
||||||
|
gtk_label_set_label (self->label, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SHOW_ZERO]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user