sync gobject2gtk with paranormal
authorJamie Gennis <gennis@purdue.edu>
Tue, 14 Aug 2001 04:11:32 +0000 (04:11 +0000)
committerJamie Gennis <gennis@purdue.edu>
Tue, 14 Aug 2001 04:11:32 +0000 (04:11 +0000)
Original commit message from CVS:
sync gobject2gtk with paranormal

gst/gobject2gtk.c
gst/gobject2gtk.h

index 72b6698..9c22265 100644 (file)
@@ -1,3 +1,5 @@
+/* Written by Erik Walthinsen 06-2001 */
+/* Modified by Jamie Gennis 06-2001 */
 #include <stdio.h>
 #include "gobject2gtk.h"
 
@@ -27,6 +29,17 @@ g_object_base_class_init (GObjectClass *klass)
   gtkobject_class->get_arg = g_object_get_arg;
 }
 
+void
+g2g_object_run_dispose (GObject *object)
+{
+  g_return_if_fail (G_IS_OBJECT (object));
+  g_return_if_fail (object->ref_count > 0);
+
+  g_object_ref (object);
+  G_OBJECT_GET_CLASS (object)->dispose (object);
+  g_object_unref (object);
+}
+
 GType
 g2g_object_get_type (void)
 {
@@ -76,7 +89,7 @@ g2g_object_new(GtkType type,gpointer blah_varargs_stuff) {
 
 
 void
-g2g_object_class_install_property(GtkObjectClass *oclass,guint property_id,GParamSpec *pspec)
+g2g_object_class_install_property(GObjectClass *oclass,guint property_id,GParamSpec *pspec)
 {
   gchar *arg_fullname;
  
@@ -87,21 +100,18 @@ g2g_object_class_install_property(GtkObjectClass *oclass,guint property_id,GPara
 }
 
 GParamSpec *
-g2g_object_class_find_property(GtkObjectClass *class,gchar *name)
+g2g_object_class_find_property(GObjectClass *class, const gchar *name)
 {
   GtkArgInfo *info;
   GParamSpec *spec;
+
   //fprintf(stderr,"class name is %s\n",gtk_type_name(class->type));
 
-  // return NULL if no info found
-  if (gtk_object_arg_get_info(class->type,name,&info)){
-    return NULL;
-  }
-  
+  gtk_object_arg_get_info(class->type,name,&info);
   spec = g_new0(GParamSpec,1);
 
   if (info) {
-    spec->name = name;
+    spec->name = (gchar *) name;
     spec->value_type = info->type;
     spec->flags = info->arg_flags;
   } else {
@@ -112,7 +122,7 @@ g2g_object_class_find_property(GtkObjectClass *class,gchar *name)
 }
 
 GParamSpec **
-g2g_object_class_list_properties(GtkObjectClass *oclass,guint *n_properties) {
+g2g_object_class_list_properties(GObjectClass *oclass,guint *n_properties) {
   GType type = G_OBJECT_CLASS_TYPE (oclass);
   guint32 *flags;
   GtkArg *args;
@@ -250,21 +260,24 @@ g2g_param_spec_string(gchar *name,gchar *nick,gchar *blurb,gchar *def,gint flags
 
 guint
 g2g_signal_new (const gchar       *name,
-               GtkType            object_type,
-               GtkSignalRunType   signal_flags,
-               guint              function_offset,
-               gpointer           accumulator,  // GSignalAccumulator
-               gpointer           accu_data,
-               GtkSignalMarshaller  marshaller,
-               GType              return_val,
-               guint              nparams,
-               ...)
+               GtkType            object_type,
+               GtkSignalRunType   signal_flags,
+               guint              function_offset,
+               gpointer           accumulator,  // GSignalAccumulator
+               gpointer           accu_data,
+               GtkSignalMarshaller  marshaller,
+               GType              return_val,
+               guint              nparams,
+               ...)
 {
   GtkType *params;
   guint i;
   va_list args;
   guint signal_id;
 
+  if (strcmp (name, "destroy") == 0)
+    name = "g2gdestroy";
+
 #define MAX_SIGNAL_PARAMS              (31)            // from gtksignal.c
   g_return_val_if_fail (nparams < MAX_SIGNAL_PARAMS, 0);
      
@@ -306,7 +319,7 @@ gint* g_signal_list_ids (GType type, guint *n_ids)
   class = gtk_type_class (type);
 
   *n_ids = class->nsignals;
-  
+
   return class->signals;
 }
 
index 0a373a0..4f4e0d9 100644 (file)
@@ -1,18 +1,27 @@
+#ifndef __GOBJECT_2_GTK_H__
+#define __GOBJECT_2_GTK_H__
+
 #include <gtk/gtk.h>
 
 #define G_MAXUINT UINT_MAX
 #define G_MAXULONG ULONG_MAX
 
+#define G_PI 3.14159265358979323846E0
+
+typedef struct _GObject GObject;
+typedef struct _GObjectClass GObjectClass;
+
 #define g_object_ref(obj)                      gtk_object_ref((GtkObject *)(obj))
 #define g_object_unref(obj)                    gtk_object_unref((GtkObject *)(obj))
 
 // the helper macros for type checking
 #define G_TYPE_CHECK_INSTANCE_CAST             GTK_CHECK_CAST
 #define G_TYPE_CHECK_INSTANCE_TYPE             GTK_CHECK_TYPE
+#define G_TYPE_INSTANCE_GET_CLASS(o,t,c)        (((c*)(GTK_OBJECT(o)->klass)))
 #define G_TYPE_CHECK_CLASS_CAST                        GTK_CHECK_CLASS_CAST
 #define G_TYPE_CHECK_CLASS_TYPE                        GTK_CHECK_CLASS_TYPE
 #define G_TYPE_FROM_CLASS(klass)               (((GtkObjectClass *)(klass))->type)
-#define G_OBJECT_GET_CLASS(object)             (GTK_OBJECT(object)->klass)
+#define G_OBJECT_GET_CLASS(object)             (G_OBJECT(object)->klass)
 #define G_OBJECT_TYPE                          GTK_OBJECT_TYPE
 #define G_OBJECT_CLASS_TYPE(gclass)            (gclass->type)
 
 #define gst_marshal_VOID__OBJECT_POINTER       gtk_marshal_NONE__POINTER_POINTER
 #define gst_marshal_VOID__INT_INT              gtk_marshal_NONE__INT_INT
 
+/* General macros */
+#ifdef  __cplusplus
+# define G_BEGIN_DECLS  extern "C" {
+# define G_END_DECLS    }
+#else
+# define G_BEGIN_DECLS
+# define G_END_DECLS
+#endif
 
 // args
 //#define set_property set_arg
 #define g_object_get_property(obj,argname,pspec)\
 G_STMT_START{ \
   (pspec)->name = (gchar*)argname;\
-  gtk_object_getv ((obj),1,(pspec));\
+  gtk_object_getv ((GtkObject *)(obj),1,(pspec));\
 }G_STMT_END
 
-#define g_object_set                           gtk_object_set
+#define g_object_set(o,args...)                        gtk_object_set ((GtkObject *) (o), ## args)
 
 
 // type system
@@ -78,6 +95,9 @@ G_STMT_START{ \
 #define GClassInitFunc                         GtkClassInitFunc
 #define GBaseInitFunc                          GtkClassInitFunc
 #define GInstanceInitFunc                      GtkObjectInitFunc
+#define g_type_class_peek_parent(c)            gtk_type_parent_class (GTK_OBJECT_CLASS (c)->type)
+#define g_type_init                             gtk_type_init
+#define g_type_is_a                            gtk_type_is_a
 #define g_type_class_ref                       gtk_type_class
 #define g_type_class_unref(c)
 #define g_type_name(t)                         gtk_type_name(t)
@@ -130,26 +150,34 @@ guint g2g_type_register_static (GtkType parent_type, gchar *type_name,
 #define g_object_new                                   g2g_object_new
 gpointer g2g_object_new(GtkType type,gpointer blah_varargs_stuff);
 
+// disposal
+#define g_object_run_dispose                           g2g_object_run_dispose
+void g2g_object_run_dispose (GObject *object);
+
 
-// signals
 #define G_SIGNAL_RUN_LAST                              GTK_RUN_LAST
 #define G_SIGNAL_RUN_FIRST                             GTK_RUN_FIRST
+#define G_SIGNAL_RUN_CLEANUP                           0
+#define G_SIGNAL_NO_RECURSE                            GTK_RUN_NO_RECURSE
+#define G_SIGNAL_NO_HOOKS                              GTK_RUN_NO_HOOKS
 
 #define GCallback                                      gpointer        // FIXME?
 #define G_CALLBACK(f)                                  ((gpointer)(f))
 
 #define g_signal_new                                   g2g_signal_new
+#define g_signal_handlers_destroy(x)
+
 guint
 g2g_signal_new (const gchar       *signal_name,
-               GtkType            object_type,
-               GtkSignalRunType   signal_flags,
-               guint              function_offset,
-               gpointer           accumulator,  // GSignalAccumulator   
-               gpointer           accu_data,
-               GtkSignalMarshaller  marshaller,
-               GType              return_type,
-               guint              nparams,
-               ...);
+               GtkType            object_type,
+               GtkSignalRunType   signal_flags,
+               guint              function_offset,
+               gpointer           accumulator,  // GSignalAccumulator   
+               gpointer           accu_data,
+               GtkSignalMarshaller  marshaller,
+               GType              return_type,
+               guint              nparams,
+               ...);
 
 #define \
 g_signal_emit(object,signal,detail,args...) \
@@ -168,12 +196,11 @@ g_signal_has_handler_pending(object,name,data,may_block) \
 gtk_signal_handler_pending ((GtkObject *)object,name,may_block)
 
 #define g_signal_lookup                        gtk_signal_lookup
-#define g_signal_handler_block         gtk_signal_handler_block
-#define g_signal_handler_unblock       gtk_signal_handler_unblock
+#define g_signal_handler_block(o,id)   gtk_signal_handler_block ((GtkObject *)(o), id)
+#define g_signal_handler_unblock(o,id) gtk_signal_handler_unblock ((GtkObject *)(o), id)
 
 gint* g_signal_list_ids (GType type, guint *n_ids);
 
-
 // arguments/parameters
 
 // first define GValue and GParamSpec
@@ -194,11 +221,11 @@ struct _GParamSpec {
 #define g_value_init(value,t)                  ((value)->type = (t))
 
 #define g_object_class_install_property                g2g_object_class_install_property
-void g2g_object_class_install_property(GtkObjectClass *oclass,guint property_id,GParamSpec *pspec);
+void g2g_object_class_install_property(GObjectClass *oclass,guint property_id,GParamSpec *pspec);
 #define g_object_class_find_property           g2g_object_class_find_property
-GParamSpec *g2g_object_class_find_property(GtkObjectClass *oclass,gchar *name);
+GParamSpec *g2g_object_class_find_property(GObjectClass *oclass,const gchar *name);
 #define g_object_class_list_properties         g2g_object_class_list_properties
-GParamSpec **g2g_object_class_list_properties(GtkObjectClass *oclass,guint *n_properties);
+GParamSpec **g2g_object_class_list_properties(GObjectClass *oclass,guint *n_properties);
 
 #define G_IS_PARAM_SPEC_ENUM(pspec)            (GTK_FUNDAMENTAL_TYPE(pspec->value_type) == GTK_TYPE_ENUM)
 
@@ -217,7 +244,7 @@ GParamSpec *g2g_param_spec_float(gchar *name,gchar *nick,gchar *blurb,float min,
 #define g_param_spec_double                    g2g_param_spec_double
 GParamSpec *g2g_param_spec_double(gchar *name,gchar *nick,gchar *blurb,double min,double max,double def,gint flags);
 #define g_param_spec_enum                      g2g_param_spec_enum
-GParamSpec *g2g_param_spec_enum(gchar *name,gchar *nick,gchar *blurb,GtkType e,guint def,gint flags);
+GParamSpec *g2g_param_spec_enum(gchar *name,gchar *nick,gchar *blurb,GType e,guint def,gint flags);
 #define g_param_spec_pointer                   g2g_param_spec_pointer
 GParamSpec *g2g_param_spec_pointer(gchar *name,gchar *nick,gchar *blurb,gint flags);
 #define g_param_spec_string                    g2g_param_spec_string
@@ -251,8 +278,8 @@ GParamSpec *g2g_param_spec_string(gchar *name,gchar *nick,gchar *blurb,gchar *de
 // the object itself
 //#define GObject                              GtkObject
 //#define GObjectClass                         GtkObjectClass
-#define G_OBJECT                               GTK_OBJECT
-#define G_OBJECT_CLASS                         GTK_OBJECT_CLASS
+#define G_OBJECT(obj)                          ((GObject *)(obj))
+#define G_OBJECT_CLASS(c)                      ((GObjectClass *)(c))
 
 #define G_TYPE_OBJECT \
   (g2g_object_get_type())
@@ -265,13 +292,10 @@ GParamSpec *g2g_param_spec_string(gchar *name,gchar *nick,gchar *blurb,gchar *de
 #define G_IS_OBJECT_CLASS(obj) \
   (GTK_CHECK_CLASS_TYPE((klass),G_TYPE_OBJECT))
 
-typedef struct _GObject GObject;
-typedef struct _GObjectClass GObjectClass;
-
 struct _GObject {
 /***** THE FOLLOWING IS A VERBATIM COPY FROM GTKOBJECT *****/
   /* GtkTypeObject related fields: */
-  GtkObjectClass *klass;
+  GObjectClass *klass;
  
    
   /* 32 bits of flags. GtkObject only uses 4 of these bits and
@@ -329,7 +353,7 @@ struct _GObjectClass {
    *  own cleanup. (See the destroy function for GtkWidget for
    *  an example of how to do this).   
    */
-  void (* shutdown) (GObject *object);
+  void (* dispose) (GObject *object);
   void (* destroy)  (GObject *object);
  
   void (* finalize) (GObject *object);
@@ -343,3 +367,4 @@ struct _GObjectClass {
 
 GType g_object_get_type (void);
 
+#endif /* __GOBJECT_2_GTK_H__ */