From 95281e3cfb21fef35037ab5704ac7f8e1cd1e58d Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Fri, 9 Jun 2023 14:22:17 -0700 Subject: [PATCH] libsysprof-gtk: add css loading helper --- .../libsysprof-gtk.gresource.xml | 1 + src/libsysprof-gtk/meson.build | 1 + src/libsysprof-gtk/style.css | 26 +++++++++++++ src/libsysprof-gtk/sysprof-css-private.h | 29 ++++++++++++++ src/libsysprof-gtk/sysprof-css.c | 38 +++++++++++++++++++ 5 files changed, 95 insertions(+) create mode 100644 src/libsysprof-gtk/style.css create mode 100644 src/libsysprof-gtk/sysprof-css-private.h create mode 100644 src/libsysprof-gtk/sysprof-css.c diff --git a/src/libsysprof-gtk/libsysprof-gtk.gresource.xml b/src/libsysprof-gtk/libsysprof-gtk.gresource.xml index 2a36c015..c4a74e39 100644 --- a/src/libsysprof-gtk/libsysprof-gtk.gresource.xml +++ b/src/libsysprof-gtk/libsysprof-gtk.gresource.xml @@ -2,5 +2,6 @@ sysprof-callgraph-view.ui + style.css diff --git a/src/libsysprof-gtk/meson.build b/src/libsysprof-gtk/meson.build index 2c517f6e..d5948613 100644 --- a/src/libsysprof-gtk/meson.build +++ b/src/libsysprof-gtk/meson.build @@ -4,6 +4,7 @@ libsysprof_gtk_public_sources = [ ] libsysprof_gtk_private_sources = [ + 'sysprof-css.c', ] libsysprof_gtk_public_headers = [ diff --git a/src/libsysprof-gtk/style.css b/src/libsysprof-gtk/style.css new file mode 100644 index 00000000..a71f8c0d --- /dev/null +++ b/src/libsysprof-gtk/style.css @@ -0,0 +1,26 @@ +progresscell progress { + background: @accent_bg_color; + border-radius: 3px; + border: 1px solid shade(@accent_bg_color, .75); + border-right: none; +} + +progresscell progress:backdrop { + background: @borders; + border-color: shade(@borders, .9); +} + +progresscell trough { + background: alpha(@borders, .5); + border: 1px solid @borders; + border-radius: 3px; +} + +progresscell label { + font-size: 0.9em; + padding: 1px 3px; +} + +progresscell label.in-progress { + color: @accent_fg_color; +} diff --git a/src/libsysprof-gtk/sysprof-css-private.h b/src/libsysprof-gtk/sysprof-css-private.h new file mode 100644 index 00000000..608ced5b --- /dev/null +++ b/src/libsysprof-gtk/sysprof-css-private.h @@ -0,0 +1,29 @@ +/* sysprof-css-private.h + * + * Copyright 2023 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +#pragma once + +#include + +G_BEGIN_DECLS + +void _sysprof_css_init (void); + +G_END_DECLS diff --git a/src/libsysprof-gtk/sysprof-css.c b/src/libsysprof-gtk/sysprof-css.c new file mode 100644 index 00000000..464cadbe --- /dev/null +++ b/src/libsysprof-gtk/sysprof-css.c @@ -0,0 +1,38 @@ +/* sysprof-css.c + * + * Copyright 2023 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +#include "config.h" + +#include "sysprof-css-private.h" + +void +_sysprof_css_init (void) +{ + static GtkCssProvider *css; + + if (css == NULL) + { + css = gtk_css_provider_new (); + gtk_css_provider_load_from_resource (css, "/libsysprof-gtk/style.css"); + gtk_style_context_add_provider_for_display (gdk_display_get_default (), + GTK_STYLE_PROVIDER (css), + G_MAXUINT); + } +}