]> granicus.if.org Git - transmission/commitdiff
(trunk gtk) use G_DEFINE_TYPE when implementing the tr-core and torent-cell-renderer...
authorJordan Lee <jordan@transmissionbt.com>
Tue, 9 Aug 2011 05:47:24 +0000 (05:47 +0000)
committerJordan Lee <jordan@transmissionbt.com>
Tue, 9 Aug 2011 05:47:24 +0000 (05:47 +0000)
gtk/torrent-cell-renderer.c
gtk/torrent-cell-renderer.h
gtk/tr-core.c
gtk/tr-core.h

index a126e2f9853091c7d6731838e9bf5e849b011b9f..8296bff2c3a47acc100f7feb31c7312c72346632 100644 (file)
@@ -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 )
index 4d64c0935d1ecb8c4fbfe623e3e31532d4e0aa25..aa557c2823f8849d13b8dad349794300bf8c5884 100644 (file)
@@ -13,7 +13,6 @@
 #ifndef GTR_TORRENT_CELL_RENDERER_H
 #define GTR_TORRENT_CELL_RENDERER_H
 
-#include <glib-object.h>
 #include <gtk/gtk.h>
 
 #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 );
 
index 97c809f18e9d47dfe80e78f8df6b0f4f25faf194..fac748e9744a1f2d04c06c8a29802b89337beca2 100644 (file)
@@ -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 );
index 48356026f30d2b4fdfc6162cfeeca4abb4131ec1..e9c313eccb023e3b70f1e9598ccbe89bc6977a2f 100644 (file)
 #include <libtransmission/transmission.h>
 #include <libtransmission/bencode.h>
 
-#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 */