[Gnucash-changes] Stephen Evanchik's Move GNCDateFormat to GLib patch.

Derek Atkins warlord at cvs.gnucash.org
Mon Jan 10 12:46:56 EST 2005


Log Message:
-----------
Stephen Evanchik's Move GNCDateFormat to GLib patch.

        * src/gnome-utils/gnc-date-format.h:
          Added #include <glib.h>
          Added private member 'disposed' to GncDenseCal struct
          Added GNC_TYPE_DATE_FORMAT macro
        * src/gnome-utils/gnc-date-format.c:
          Converted the following functions to use GObject:
                gnc_date_format_get_type,
                gnc_date_format_class_init
          Created gnc_date_format_dipose function

Tags:
----
gnucash-gnome2-dev

Modified Files:
--------------
    gnucash:
        ChangeLog
    gnucash/src/gnome-utils:
        gnc-date-format.c
        gnc-date-format.h

Revision Data
-------------
Index: ChangeLog
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/ChangeLog,v
retrieving revision 1.1487.2.157
retrieving revision 1.1487.2.158
diff -LChangeLog -LChangeLog -u -r1.1487.2.157 -r1.1487.2.158
--- ChangeLog
+++ ChangeLog
@@ -1,3 +1,16 @@
+2004-01-10  Derek Atkins  <derek at ihtfp.com>
+
+	Stephen Evanchik's Move GNCDateFormat to GLib patch:
+        * src/gnome-utils/gnc-date-format.h:
+          Added #include <glib.h>
+          Added private member 'disposed' to GncDenseCal struct
+          Added GNC_TYPE_DATE_FORMAT macro
+        * src/gnome-utils/gnc-date-format.c:
+          Converted the following functions to use GObject:
+                gnc_date_format_get_type,
+                gnc_date_format_class_init
+          Created gnc_date_format_dipose function
+
 2004-01-02  Derek Atkins  <derek at ihtfp.com>
 
 	* src/engine/test/Makefile.am: don't explicitly add -lglib.
Index: gnc-date-format.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/gnome-utils/gnc-date-format.h,v
retrieving revision 1.3
retrieving revision 1.3.2.1
diff -Lsrc/gnome-utils/gnc-date-format.h -Lsrc/gnome-utils/gnc-date-format.h -u -r1.3 -r1.3.2.1
--- src/gnome-utils/gnc-date-format.h
+++ src/gnome-utils/gnc-date-format.h
@@ -30,8 +30,10 @@
 #define GNC_DATE_FORMAT_H 
 
 #include <gnome.h>
+#include <glib.h>
 #include "gnc-date.h"
 
+#define GNC_TYPE_DATE_FORMAT         (gnc_date_format_get_type ())
 #define GNC_DATE_FORMAT(obj)          GTK_CHECK_CAST (obj, gnc_date_format_get_type(), GNCDateFormat)
 #define GNC_DATE_FORMAT_CLASS(klass)  GTK_CHECK_CLASS_CAST (klass, gnc_date_format_get_type(), GNCDateFormatClass)
 #define GNC_IS_DATE_FORMAT(obj)       GTK_CHECK_TYPE (obj, gnc_date_format_get_type ())
@@ -46,6 +48,8 @@
 	GtkWidget *label;
 
 	GNCDateFormatPriv *priv;
+
+	int disposed;
 } GNCDateFormat;
 
 typedef struct {
@@ -53,7 +57,7 @@
 	void (*format_changed) (GNCDateFormat *gdf);
 } GNCDateFormatClass;
 
-guint     gnc_date_format_get_type        (void);
+GType     gnc_date_format_get_type        (void);
 
 GtkWidget *gnc_date_format_new            (void);
 GtkWidget *gnc_date_format_new_without_label (void);
Index: gnc-date-format.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/gnome-utils/gnc-date-format.c,v
retrieving revision 1.3.2.3
retrieving revision 1.3.2.4
diff -Lsrc/gnome-utils/gnc-date-format.c -Lsrc/gnome-utils/gnc-date-format.c -u -r1.3.2.3 -r1.3.2.4
--- src/gnome-utils/gnc-date-format.c
+++ src/gnome-utils/gnc-date-format.c
@@ -72,7 +72,8 @@
 
 static void gnc_date_format_init         (GNCDateFormat      *gdf);
 static void gnc_date_format_class_init   (GNCDateFormatClass *class);
-static void gnc_date_format_finalize      (GObject          *object);
+static void gnc_date_format_finalize     (GObject            *object);
+static void gnc_date_format_dispose      (GObject            *object);
 static void gnc_date_format_compute_format(GNCDateFormat *gdf);
 
 /* Used by glade_xml_signal_autoconnect_full */
@@ -85,24 +86,28 @@
  *
  * Returns the GtkType for the GNCDateFormat widget
  */
-guint
+GType
 gnc_date_format_get_type (void)
 {
-  static guint date_format_type = 0;
+  static GType date_format_type = 0;
 
   if (!date_format_type){
-    GtkTypeInfo date_format_info = {
-      "GNCDateFormat",
-      sizeof (GNCDateFormat),
+    static const GTypeInfo date_format_info = {
       sizeof (GNCDateFormatClass),
-      (GtkClassInitFunc) gnc_date_format_class_init,
-      (GtkObjectInitFunc) gnc_date_format_init,
       NULL,
       NULL,
+      (GClassInitFunc) gnc_date_format_class_init,
+      NULL,
+      NULL,
+      sizeof (GNCDateFormat),
+      0,
+      (GInstanceInitFunc) gnc_date_format_init,
+      NULL,
     };
 
-    date_format_type = gtk_type_unique (gtk_hbox_get_type (),
-					&date_format_info);
+    date_format_type = g_type_register_static(GTK_TYPE_HBOX,
+				        "GNCDateFormat",
+					&date_format_info, 0);
   }
 	
   return date_format_type;
@@ -110,16 +115,15 @@
 
 
 static void
-gnc_date_format_class_init (GNCDateFormatClass *class)
+gnc_date_format_class_init (GNCDateFormatClass *klass)
 {
-  GObjectClass   *gobject_class = (GObjectClass *) class;
-  GtkObjectClass *object_class = (GtkObjectClass *) class;
+  GObjectClass   *gobject_class = (GObjectClass *) klass;
 
-  parent_class = gtk_type_class (gtk_hbox_get_type ());
+  parent_class = g_type_class_peek_parent(klass);
 
   date_format_signals [FORMAT_CHANGED] =
     g_signal_new ("format_changed",
-		  G_OBJECT_CLASS_TYPE (object_class),
+		  G_OBJECT_CLASS_TYPE (gobject_class),
 		  G_SIGNAL_RUN_FIRST,
 		  G_STRUCT_OFFSET (GNCDateFormatClass, format_changed),
 		  NULL,
@@ -128,9 +132,10 @@
 		  G_TYPE_NONE,
 		  0);
 
+  gobject_class->dispose = gnc_date_format_dispose;
   gobject_class->finalize = gnc_date_format_finalize;
 
-  class->format_changed = NULL;
+  /* GtkObjectClass class->format_changed = NULL; */
 }
 
 static void
@@ -142,6 +147,8 @@
   g_return_if_fail(gdf);
   g_return_if_fail(GNC_IS_DATE_FORMAT(gdf));
 
+  gdf->disposed = FALSE;
+
   gdf->priv = g_new0(GNCDateFormatPriv, 1);
 
   /* Open up the Glade and set the signals */
@@ -178,14 +185,37 @@
   /* pull in the dialog and table widgets and play the reconnect game */
   dialog = glade_xml_get_widget(xml, "GNC Date Format");
 
-  gtk_object_ref(GTK_OBJECT(gdf->priv->table));
+  g_object_ref(G_OBJECT(gdf->priv->table));
   gtk_container_remove(GTK_CONTAINER(dialog), gdf->priv->table);
   gtk_container_add(GTK_CONTAINER(gdf), gdf->priv->table);
-  /* XXX: do I need to unref the table? */
+  /* XXX: do I need to unref the table? 
+     SAE: I think so, see gnc_data_format_dispose
+   */
   gtk_widget_destroy(dialog);
 }
 
 static void
+gnc_date_format_dispose (GObject *object)
+{
+  GNCDateFormat *gdf;
+
+  g_return_if_fail(object != NULL);
+  g_return_if_fail(GNC_IS_DATE_FORMAT(object));
+
+  gdf = GNC_DATE_FORMAT(object);
+
+  if(gdf->disposed)
+    return;
+
+  gdf->disposed = TRUE;
+
+  g_object_unref(G_OBJECT(gdf->priv->table));
+
+  if (G_OBJECT_CLASS(parent_class)->dispose)
+    (* G_OBJECT_CLASS(parent_class)->dispose) (object);
+}
+
+static void
 gnc_date_format_finalize (GObject *object)
 {
   GNCDateFormat *gdf;
@@ -243,7 +273,7 @@
 {
   GNCDateFormat *gdf;
 
-  gdf = gtk_type_new (gnc_date_format_get_type ());
+  gdf = g_object_new(GNC_TYPE_DATE_FORMAT, NULL);
 
   if (label)
     gtk_label_set_text(GTK_LABEL(gdf->label), label);
@@ -501,3 +531,4 @@
   /* Emit a signal that we've changed */
   g_signal_emit(G_OBJECT(gdf), date_format_signals[FORMAT_CHANGED], 0);
 }
+


More information about the gnucash-changes mailing list