libsysprof-gtk: make track subclassable

The goal here is that we can move a bunch of the machinery to create
charts into subclasses rather than one sort of annoying convoluted layer.
This commit is contained in:
Christian Hergert
2023-06-29 12:23:34 -07:00
parent 6e476b683a
commit 821bfc9bdf
2 changed files with 38 additions and 13 deletions

View File

@ -20,6 +20,8 @@
#pragma once
#include <gtk/gtk.h>
#include <sysprof-analyze.h>
G_BEGIN_DECLS
@ -27,11 +29,25 @@ G_BEGIN_DECLS
#define SYSPROF_TYPE_TRACK (sysprof_track_get_type())
SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_FINAL_TYPE (SysprofTrack, sysprof_track, SYSPROF, TRACK, GObject)
G_DECLARE_DERIVABLE_TYPE (SysprofTrack, sysprof_track, SYSPROF, TRACK, GObject)
struct _SysprofTrackClass
{
GObjectClass parent_class;
GtkWidget *(*create_chart) (SysprofTrack *self);
/*< private >*/
gpointer _reserved[16];
};
SYSPROF_AVAILABLE_IN_ALL
const char *sysprof_track_get_title (SysprofTrack *self);
SYSPROF_AVAILABLE_IN_ALL
GListModel *sysprof_track_list_subtracks (SysprofTrack *self);
SYSPROF_AVAILABLE_IN_ALL
GMenuModel *sysprof_track_get_menu_model (SysprofTrack *self);
SYSPROF_AVAILABLE_IN_ALL
GtkWidget *sysprof_track_create_chart (SysprofTrack *self);
G_END_DECLS