From d3bf654b118e6d6b199732012009a5a19a8fb2e2 Mon Sep 17 00:00:00 2001 From: Richard Cohen Date: Thu, 4 May 2023 17:31:57 +0100 Subject: [PATCH] Refactor: DECLARE/DEFINE_INTERFACE GncWindow < GObject --- gnucash/gnome-utils/gnc-embedded-window.c | 4 +-- gnucash/gnome-utils/gnc-main-window.cpp | 4 +-- gnucash/gnome-utils/gnc-window.c | 30 +++-------------------- gnucash/gnome-utils/gnc-window.h | 12 +++------ 4 files changed, 11 insertions(+), 39 deletions(-) diff --git a/gnucash/gnome-utils/gnc-embedded-window.c b/gnucash/gnome-utils/gnc-embedded-window.c index b35233759c..a6588f3a44 100644 --- a/gnucash/gnome-utils/gnc-embedded-window.c +++ b/gnucash/gnome-utils/gnc-embedded-window.c @@ -58,7 +58,7 @@ static QofLogModule log_module = GNC_MOD_GUI; static void gnc_embedded_window_finalize (GObject *object); static void gnc_embedded_window_dispose (GObject *object); -static void gnc_window_embedded_window_init (GncWindowIface *iface); +static void gnc_window_embedded_window_init (GncWindowInterface *iface); static void gnc_embedded_window_setup_window (GncEmbeddedWindow *window); @@ -499,7 +499,7 @@ gnc_embedded_window_get_accel_group (GncWindow *window) * @param iface A pointer to the interface data structure to * populate. */ static void -gnc_window_embedded_window_init (GncWindowIface *iface) +gnc_window_embedded_window_init (GncWindowInterface *iface) { iface->get_gtk_window = gnc_embedded_window_get_gtk_window; iface->get_statusbar = gnc_embedded_window_get_statusbar; diff --git a/gnucash/gnome-utils/gnc-main-window.cpp b/gnucash/gnome-utils/gnc-main-window.cpp index 845d1e250f..51540ea424 100644 --- a/gnucash/gnome-utils/gnc-main-window.cpp +++ b/gnucash/gnome-utils/gnc-main-window.cpp @@ -154,7 +154,7 @@ static void gnc_main_window_finalize (GObject *object); static void gnc_main_window_destroy (GtkWidget *widget); static void gnc_main_window_setup_window (GncMainWindow *window); -static void gnc_window_main_window_init (GncWindowIface *iface); +static void gnc_window_main_window_init (GncWindowInterface *iface); #ifndef MAC_INTEGRATION static void gnc_main_window_update_all_menu_items (void); #endif @@ -5453,7 +5453,7 @@ gnc_main_window_get_accel_group (GncWindow *window) * @param iface A pointer to the interface data structure to * populate. */ static void -gnc_window_main_window_init (GncWindowIface *iface) +gnc_window_main_window_init (GncWindowInterface *iface) { iface->get_gtk_window = gnc_main_window_get_gtk_window; iface->get_statusbar = gnc_main_window_get_statusbar; diff --git a/gnucash/gnome-utils/gnc-window.c b/gnucash/gnome-utils/gnc-window.c index 92568b8cd4..e58ffd4d26 100644 --- a/gnucash/gnome-utils/gnc-window.c +++ b/gnucash/gnome-utils/gnc-window.c @@ -34,33 +34,11 @@ static QofLogModule log_module = GNC_MOD_GUI; -GType -gnc_window_get_type (void) +G_DEFINE_INTERFACE (GncWindow, gnc_window, G_TYPE_OBJECT) + +static void +gnc_window_default_init (GncWindowInterface *klass) { - static GType gnc_window_type = 0; - - if (gnc_window_type == 0) - { - static const GTypeInfo our_info = - { - sizeof (GncWindowIface), - NULL, - NULL, - NULL, - NULL, - NULL, - 0, - 0, - NULL - }; - - gnc_window_type = g_type_register_static (G_TYPE_INTERFACE, - "GncWindow", - &our_info, 0); - g_type_interface_add_prerequisite (gnc_window_type, G_TYPE_OBJECT); - } - - return gnc_window_type; } /************************************************************ diff --git a/gnucash/gnome-utils/gnc-window.h b/gnucash/gnome-utils/gnc-window.h index 01978346fa..63db5760f8 100644 --- a/gnucash/gnome-utils/gnc-window.h +++ b/gnucash/gnome-utils/gnc-window.h @@ -48,14 +48,10 @@ G_BEGIN_DECLS /* type macros */ #define GNC_TYPE_WINDOW (gnc_window_get_type ()) -#define GNC_WINDOW(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_WINDOW, GncWindow)) -#define GNC_IS_WINDOW(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_WINDOW)) -#define GNC_WINDOW_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), GNC_TYPE_WINDOW, GncWindowIface)) +G_DECLARE_INTERFACE (GncWindow, gnc_window, GNC, WINDOW, GObject) /* typedefs & structures */ -typedef struct GncWindow GncWindow; /* dummy typedef */ - -typedef struct +struct _GncWindowInterface { GTypeInterface parent; @@ -68,11 +64,9 @@ typedef struct GMenuModel * (* get_menubar_model) (GncWindow *window); GtkAccelGroup * (* get_accel_group) (GncWindow *window); void (* ui_set_sensitive) (GncWindow *window, gboolean sensitive); -} GncWindowIface; +}; /* function prototypes */ -GType gnc_window_get_type (void); - GtkWindow *gnc_window_get_gtk_window (GncWindow *window); void gnc_window_update_status (GncWindow *window, GncPluginPage *page);