libsysprof: add a tooltip-text helper

This commit is contained in:
Christian Hergert
2023-07-19 22:35:21 -07:00
parent de15129786
commit 7f7afe9559
2 changed files with 41 additions and 8 deletions

View File

@ -31,6 +31,7 @@ enum {
PROP_BINARY_PATH,
PROP_KIND,
PROP_NAME,
PROP_TOOLTIP_TEXT,
N_PROPS
};
@ -74,6 +75,10 @@ sysprof_symbol_get_property (GObject *object,
g_value_set_enum (value, sysprof_symbol_get_kind (self));
break;
case PROP_TOOLTIP_TEXT:
g_value_take_string (value, sysprof_symbol_dup_tooltip_text (self));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@ -102,6 +107,11 @@ sysprof_symbol_class_init (SysprofSymbolClass *klass)
NULL,
(G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
properties [PROP_TOOLTIP_TEXT] =
g_param_spec_string ("tooltip-text", NULL, NULL,
NULL,
(G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
properties [PROP_KIND] =
g_param_spec_enum ("kind", NULL, NULL,
SYSPROF_TYPE_SYMBOL_KIND,
@ -200,6 +210,27 @@ sysprof_symbol_get_kind (SysprofSymbol *self)
return self ? self->kind : 0;
}
/**
* sysprof_symbol_dup_tooltip_text:
* @self: a #SysprofSymbol
*
* Returns: (transfer full): the tooltip text
*/
char *
sysprof_symbol_dup_tooltip_text (SysprofSymbol *self)
{
GString *str;
g_return_val_if_fail (SYSPROF_IS_SYMBOL (self), NULL);
str = g_string_new (self->name);
if (!g_str_has_prefix (str->str, "In File") && self->binary_path)
g_string_append_printf (str, " [%s+0x%"G_GINT64_MODIFIER"x]", self->binary_path, self->begin_address);
return g_string_free (str, FALSE);
}
G_DEFINE_ENUM_TYPE (SysprofSymbolKind, sysprof_symbol_kind,
G_DEFINE_ENUM_VALUE (SYSPROF_SYMBOL_KIND_ROOT, "root"),
G_DEFINE_ENUM_VALUE (SYSPROF_SYMBOL_KIND_PROCESS, "process"),

View File

@ -45,19 +45,21 @@ SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_FINAL_TYPE (SysprofSymbol, sysprof_symbol, SYSPROF, SYMBOL, GObject)
SYSPROF_AVAILABLE_IN_ALL
GType sysprof_symbol_kind_get_type (void) G_GNUC_CONST;
GType sysprof_symbol_kind_get_type (void) G_GNUC_CONST;
SYSPROF_AVAILABLE_IN_ALL
const char *sysprof_symbol_get_name (SysprofSymbol *self);
const char *sysprof_symbol_get_name (SysprofSymbol *self);
SYSPROF_AVAILABLE_IN_ALL
const char *sysprof_symbol_get_binary_nick (SysprofSymbol *self);
const char *sysprof_symbol_get_binary_nick (SysprofSymbol *self);
SYSPROF_AVAILABLE_IN_ALL
const char *sysprof_symbol_get_binary_path (SysprofSymbol *self);
const char *sysprof_symbol_get_binary_path (SysprofSymbol *self);
SYSPROF_AVAILABLE_IN_ALL
SysprofSymbolKind sysprof_symbol_get_kind (SysprofSymbol *self);
SysprofSymbolKind sysprof_symbol_get_kind (SysprofSymbol *self);
SYSPROF_AVAILABLE_IN_ALL
guint sysprof_symbol_hash (const SysprofSymbol *self);
guint sysprof_symbol_hash (const SysprofSymbol *self);
SYSPROF_AVAILABLE_IN_ALL
gboolean sysprof_symbol_equal (const SysprofSymbol *a,
const SysprofSymbol *b);
gboolean sysprof_symbol_equal (const SysprofSymbol *a,
const SysprofSymbol *b);
SYSPROF_AVAILABLE_IN_ALL
char *sysprof_symbol_dup_tooltip_text (SysprofSymbol *self);
G_END_DECLS