diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2021-06-07 17:58:54 +0200 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2021-06-08 18:48:16 +0200 |
commit | 073f5f28b835d3bda5e8771383c26d78d9740768 (patch) | |
tree | 20ed540730c940d82d9c6b4cd81408bec6c42cd1 /src/interface-gtk/gtk-label.h | |
parent | 0507d6a8b2bc590faf97c5f7d406218d1980470b (diff) | |
download | sciteco-073f5f28b835d3bda5e8771383c26d78d9740768.tar.gz |
get rid of the GObject Builder (GOB2): converted teco-gtk-info-popup.gob and teco-gtk-label.gob to plain C
* Using modern GObject idioms and macros greatly reduces the necessary boilerplate code.
* The plain C versions of our GObject classes are now "final" (cannot be derived)
This means we can hide the instance structures from the headers and avoid using
explicit private fields.
* Avoids some deprecation warnings when building the Gtk UI.
* GOB2 is apparently no longer maintained, so this seems like a good idea in the long run.
* The most important reason however is that there is no precompiled GOB2 for Windows
which prevents compilation on native Windows hosts, eg. during nightly builds.
This is even more important as Gtk+3 is distributed on Windows practically
exclusively via MSYS.
(ArchLinux contains MinGW gtk3 packages as well, so cross-compiling from ArchLinux
would have been an alternative.)
Diffstat (limited to 'src/interface-gtk/gtk-label.h')
-rw-r--r-- | src/interface-gtk/gtk-label.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/interface-gtk/gtk-label.h b/src/interface-gtk/gtk-label.h new file mode 100644 index 0000000..e20646d --- /dev/null +++ b/src/interface-gtk/gtk-label.h @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2012-2021 Robin Haberkorn + * + * 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 <http://www.gnu.org/licenses/>. + */ +#pragma once + +#include <glib.h> +#include <glib-object.h> + +#include <gtk/gtk.h> + +#define TECO_TYPE_GTK_LABEL teco_gtk_label_get_type() +G_DECLARE_FINAL_TYPE(TecoGtkLabel, teco_gtk_label, TECO, GTK_LABEL, GtkLabel) + +GtkWidget *teco_gtk_label_new(const gchar *str, gssize len); + +void teco_gtk_label_set_text(TecoGtkLabel *self, const gchar *str, gssize len); + +void teco_gtk_label_parse_string(const gchar *str, gssize len, + PangoColor *fg, guint16 fg_alpha, + PangoColor *bg, guint16 bg_alpha, + PangoAttrList **attribs, gchar **text); |