From 62901690992ea6ae4c8002eded5aedcceb5df995 Mon Sep 17 00:00:00 2001 From: Jordan Lee Date: Tue, 9 Aug 2011 05:47:24 +0000 Subject: [PATCH] (trunk gtk) use G_DEFINE_TYPE when implementing the tr-core and torent-cell-renderer classes --- gtk/torrent-cell-renderer.c | 38 +-------- gtk/torrent-cell-renderer.h | 11 +-- gtk/tr-core.c | 164 +++++++++++++++--------------------- gtk/tr-core.h | 15 ++-- 4 files changed, 85 insertions(+), 143 deletions(-) diff --git a/gtk/torrent-cell-renderer.c b/gtk/torrent-cell-renderer.c index a126e2f98..8296bff2c 100644 --- a/gtk/torrent-cell-renderer.c +++ b/gtk/torrent-cell-renderer.c @@ -308,8 +308,6 @@ getStatusString( GString * gstr, **** ***/ -static GtkCellRendererClass * parent_class = NULL; - struct TorrentCellRendererPrivate { tr_torrent * tor; @@ -892,6 +890,8 @@ torrent_cell_renderer_dispose( GObject * o ) parent->dispose( o ); } +G_DEFINE_TYPE (TorrentCellRenderer, torrent_cell_renderer, GTK_TYPE_CELL_RENDERER) + static void torrent_cell_renderer_class_init( TorrentCellRendererClass * klass ) { @@ -901,8 +901,6 @@ torrent_cell_renderer_class_init( TorrentCellRendererClass * klass ) g_type_class_add_private( klass, sizeof( struct TorrentCellRendererPrivate ) ); - parent_class = (GtkCellRendererClass*) g_type_class_peek_parent( klass ); - cell_class->render = torrent_cell_renderer_render; cell_class->get_size = torrent_cell_renderer_get_size; gobject_class->set_property = torrent_cell_renderer_set_property; @@ -941,10 +939,9 @@ torrent_cell_renderer_class_init( TorrentCellRendererClass * klass ) } static void -torrent_cell_renderer_init( GTypeInstance * instance, gpointer g_class UNUSED ) +torrent_cell_renderer_init( TorrentCellRenderer * self ) { struct TorrentCellRendererPrivate * p; - TorrentCellRenderer * self = TORRENT_CELL_RENDERER( instance ); p = self->priv = G_TYPE_INSTANCE_GET_PRIVATE( self, @@ -966,35 +963,6 @@ torrent_cell_renderer_init( GTypeInstance * instance, gpointer g_class UNUSED ) p->bar_height = DEFAULT_BAR_HEIGHT; } -GType -torrent_cell_renderer_get_type( void ) -{ - static GType type = 0; - - if( !type ) - { - static const GTypeInfo info = - { - sizeof( TorrentCellRendererClass ), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc)torrent_cell_renderer_class_init, - NULL, /* class_finalize - */ - NULL, /* class_data */ - sizeof( TorrentCellRenderer ), - 0, /* n_preallocs */ - (GInstanceInitFunc)torrent_cell_renderer_init, - NULL - }; - - type = g_type_register_static( GTK_TYPE_CELL_RENDERER, - "TorrentCellRenderer", - &info, (GTypeFlags)0 ); - } - - return type; -} GtkCellRenderer * torrent_cell_renderer_new( void ) diff --git a/gtk/torrent-cell-renderer.h b/gtk/torrent-cell-renderer.h index 4d64c0935..aa557c282 100644 --- a/gtk/torrent-cell-renderer.h +++ b/gtk/torrent-cell-renderer.h @@ -13,7 +13,6 @@ #ifndef GTR_TORRENT_CELL_RENDERER_H #define GTR_TORRENT_CELL_RENDERER_H -#include #include #define TORRENT_CELL_RENDERER_TYPE ( torrent_cell_renderer_get_type( ) ) @@ -29,16 +28,18 @@ typedef struct TorrentCellRendererClass TorrentCellRendererClass; struct TorrentCellRenderer { - GtkCellRenderer parent; - struct TorrentCellRendererPrivate * priv; + GtkCellRenderer parent; + + /*< private >*/ + struct TorrentCellRendererPrivate * priv; }; struct TorrentCellRendererClass { - GtkCellRendererClass parent; + GtkCellRendererClass parent; }; -GType torrent_cell_renderer_get_type( void ); +GType torrent_cell_renderer_get_type( void ) G_GNUC_CONST; GtkCellRenderer * torrent_cell_renderer_new( void ); diff --git a/gtk/tr-core.c b/gtk/tr-core.c index 97c809f18..fac748e97 100644 --- a/gtk/tr-core.c +++ b/gtk/tr-core.c @@ -61,7 +61,7 @@ enum LAST_SIGNAL }; -static guint core_signals[LAST_SIGNAL] = { 0 }; +static guint signals[LAST_SIGNAL] = { 0 }; static void core_maybe_inhibit_hibernation( TrCore * core ); @@ -118,84 +118,80 @@ core_finalize( GObject * o ) parent->finalize( o ); } +G_DEFINE_TYPE (TrCore, tr_core, G_TYPE_OBJECT) + static void -gtr_core_class_init( gpointer g_class, gpointer g_class_data UNUSED ) +tr_core_class_init( TrCoreClass * core_class ) { GObjectClass * gobject_class; + GType core_type = G_TYPE_FROM_CLASS( core_class ); - g_type_class_add_private( g_class, sizeof( struct TrCorePrivate ) ); + g_type_class_add_private( core_class, sizeof( struct TrCorePrivate ) ); - gobject_class = G_OBJECT_CLASS( g_class ); + gobject_class = G_OBJECT_CLASS( core_class ); gobject_class->dispose = core_dispose; gobject_class->finalize = core_finalize; - core_signals[ADD_ERROR_SIGNAL] = g_signal_new( - "add-error", - G_TYPE_FROM_CLASS( g_class ), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET(TrCoreClass, add_error), - NULL, NULL, - g_cclosure_marshal_VOID__UINT_POINTER, - G_TYPE_NONE, - 2, G_TYPE_UINT, G_TYPE_POINTER ); - - core_signals[ADD_PROMPT_SIGNAL] = g_signal_new( - "add-prompt", - G_TYPE_FROM_CLASS( g_class ), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET(TrCoreClass, add_prompt), - NULL, NULL, - g_cclosure_marshal_VOID__POINTER, - G_TYPE_NONE, - 1, G_TYPE_POINTER ); - - core_signals[BUSY_SIGNAL] = g_signal_new( - "busy", - G_TYPE_FROM_CLASS( g_class ), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET(TrCoreClass, busy), - NULL, NULL, - g_cclosure_marshal_VOID__BOOLEAN, - G_TYPE_NONE, - 1, G_TYPE_BOOLEAN ); - - core_signals[BLOCKLIST_SIGNAL] = g_signal_new( - "blocklist-updated", - G_TYPE_FROM_CLASS( g_class ), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET(TrCoreClass, blocklist_updated), - NULL, NULL, - g_cclosure_marshal_VOID__INT, - G_TYPE_NONE, - 1, G_TYPE_INT ); - - core_signals[PORT_SIGNAL] = g_signal_new( - "port-tested", - G_TYPE_FROM_CLASS( g_class ), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET(TrCoreClass, port_tested), - NULL, NULL, - g_cclosure_marshal_VOID__BOOLEAN, - G_TYPE_NONE, - 1, G_TYPE_BOOLEAN ); - - core_signals[PREFS_SIGNAL] = g_signal_new( - "prefs-changed", - G_TYPE_FROM_CLASS( g_class ), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET(TrCoreClass, prefs_changed), - NULL, NULL, - g_cclosure_marshal_VOID__STRING, - G_TYPE_NONE, - 1, G_TYPE_STRING ); + signals[ADD_ERROR_SIGNAL] = + g_signal_new( "add-error", core_type, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(TrCoreClass, add_error), + NULL, NULL, + g_cclosure_marshal_VOID__UINT_POINTER, + G_TYPE_NONE, + 2, G_TYPE_UINT, G_TYPE_POINTER ); + + signals[ADD_PROMPT_SIGNAL] = + g_signal_new( "add-prompt", core_type, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(TrCoreClass, add_prompt), + NULL, NULL, + g_cclosure_marshal_VOID__POINTER, + G_TYPE_NONE, + 1, G_TYPE_POINTER ); + + signals[BUSY_SIGNAL] = + g_signal_new( "busy", core_type, + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET(TrCoreClass, busy), + NULL, NULL, + g_cclosure_marshal_VOID__BOOLEAN, + G_TYPE_NONE, + 1, G_TYPE_BOOLEAN ); + + signals[BLOCKLIST_SIGNAL] = + g_signal_new( "blocklist-updated", core_type, + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET(TrCoreClass, blocklist_updated), + NULL, NULL, + g_cclosure_marshal_VOID__INT, + G_TYPE_NONE, + 1, G_TYPE_INT ); + + signals[PORT_SIGNAL] = + g_signal_new( "port-tested", core_type, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(TrCoreClass, port_tested), + NULL, NULL, + g_cclosure_marshal_VOID__BOOLEAN, + G_TYPE_NONE, + 1, G_TYPE_BOOLEAN ); + + signals[PREFS_SIGNAL] = + g_signal_new( "prefs-changed", core_type, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(TrCoreClass, prefs_changed), + NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, + 1, G_TYPE_STRING ); } static void -core_init( GTypeInstance * instance, gpointer g_class UNUSED ) +tr_core_init( TrCore * core ) { GtkListStore * store; struct TrCorePrivate * p; - TrCore * self = (TrCore *) instance; /* column types for the model used to store torrent information */ /* keep this in sync with the enum near the bottom of tr_core.h */ @@ -214,7 +210,7 @@ core_init( GTypeInstance * instance, gpointer g_class UNUSED ) G_TYPE_INT, /* MC_ERROR */ G_TYPE_INT }; /* MC_ACTIVE_PEER_COUNT */ - p = self->priv = G_TYPE_INSTANCE_GET_PRIVATE( self, + p = core->priv = G_TYPE_INSTANCE_GET_PRIVATE( core, TR_CORE_TYPE, struct TrCorePrivate ); @@ -228,31 +224,7 @@ core_init( GTypeInstance * instance, gpointer g_class UNUSED ) g_object_unref( p->raw_model ); } -GType -gtr_core_get_type( void ) -{ - static GType type = 0; - if( !type ) - { - static const GTypeInfo info = - { - sizeof( TrCoreClass ), - NULL, /* base_init */ - NULL, /* base_finalize */ - gtr_core_class_init, /* class_init */ - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof( TrCore ), - 0, /* n_preallocs */ - core_init, /* instance_init */ - NULL, - }; - type = g_type_register_static( G_TYPE_OBJECT, "TrCore", &info, 0 ); - } - - return type; -} /*** **** EMIT SIGNALS @@ -261,31 +233,31 @@ gtr_core_get_type( void ) static inline void core_emit_blocklist_udpated( TrCore * core, int ruleCount ) { - g_signal_emit( core, core_signals[BLOCKLIST_SIGNAL], 0, ruleCount ); + g_signal_emit( core, signals[BLOCKLIST_SIGNAL], 0, ruleCount ); } static inline void core_emit_port_tested( TrCore * core, gboolean is_open ) { - g_signal_emit( core, core_signals[PORT_SIGNAL], 0, is_open ); + g_signal_emit( core, signals[PORT_SIGNAL], 0, is_open ); } static inline void core_emit_err( TrCore * core, enum tr_core_err type, const char * msg ) { - g_signal_emit( core, core_signals[ADD_ERROR_SIGNAL], 0, type, msg ); + g_signal_emit( core, signals[ADD_ERROR_SIGNAL], 0, type, msg ); } static inline void core_emit_busy( TrCore * core, gboolean is_busy ) { - g_signal_emit( core, core_signals[BUSY_SIGNAL], 0, is_busy ); + g_signal_emit( core, signals[BUSY_SIGNAL], 0, is_busy ); } void gtr_core_pref_changed( TrCore * core, const char * key ) { - g_signal_emit( core, core_signals[PREFS_SIGNAL], 0, key ); + g_signal_emit( core, signals[PREFS_SIGNAL], 0, key ); } /*** @@ -1056,7 +1028,7 @@ core_add_ctor( TrCore * core, tr_ctor * ctor, default: if( do_prompt ) - g_signal_emit( core, core_signals[ADD_PROMPT_SIGNAL], 0, ctor ); + g_signal_emit( core, signals[ADD_PROMPT_SIGNAL], 0, ctor ); else { gtr_core_add_torrent( core, core_create_new_torrent( core, ctor ), do_notify ); tr_ctorFree( ctor ); diff --git a/gtk/tr-core.h b/gtk/tr-core.h index 48356026f..e9c313ecc 100644 --- a/gtk/tr-core.h +++ b/gtk/tr-core.h @@ -31,17 +31,16 @@ #include #include -#define TR_CORE_TYPE ( gtr_core_get_type() ) -#define TR_CORE(o) G_TYPE_CHECK_INSTANCE_CAST((o), TR_CORE_TYPE, TrCore) -#define TR_IS_CORE(o) G_TYPE_CHECK_INSTANCE_TYPE((o), TR_CORE_TYPE ) -#define TR_CORE_CLASS(k) G_TYPE_CHECK_CLASS_CAST((k), TR_CORE_TYPE, TrCoreClass) -#define TR_IS_CORE_CLASS(k) G_TYPE_CHECK_CLASS_TYPE((k), TR_CORE_TYPE ) -#define TR_CORE_GET_CLASS(o) G_TYPE_INSTANCE_GET_CLASS((o), TR_CORE_TYPE, TrCoreClass) +G_BEGIN_DECLS + +#define TR_CORE_TYPE (tr_core_get_type ()) +#define TR_CORE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TR_CORE_TYPE, TrCore)) typedef struct _TrCore { GObject parent; + /*< private >*/ struct TrCorePrivate * priv; } TrCore; @@ -67,7 +66,7 @@ typedef struct _TrCoreClass } TrCoreClass; -GType gtr_core_get_type( void ); +GType tr_core_get_type (void) G_GNUC_CONST; TrCore * gtr_core_new( tr_session * ); @@ -194,5 +193,7 @@ enum MC_ROW_COUNT }; +G_END_DECLS + #endif /* GTR_CORE_H */ -- 2.40.0