[Gnucash-changes] Stephen Evanchik's GncDenseCal GObject patch.

Derek Atkins warlord at cvs.gnucash.org
Sat Dec 18 14:04:26 EST 2004


Log Message:
-----------
Stephen Evanchik's GncDenseCal GObject patch.

        * src/gnome-utils/gnc-dense-cal.h:
          Added #include <glib.h>
          Added private member 'disposed' to GncDenseCal struct
          Added GNC_TYPE_DENSE_CAL macro
        * src/gnome-utils/gnc-dense-cal.c:
          Converted the following functions to use GObject:
                gnc_dense_cal_get_type,
                gnc_dense_cal_class_init
          Renamed gnc_dense_cal_destroy to gnc_dense_cal_dispose

Tags:
----
gnucash-gnome2-dev

Modified Files:
--------------
    gnucash:
        ChangeLog
    gnucash/src/gnome-utils:
        gnc-dense-cal.c
        gnc-dense-cal.h

Revision Data
-------------
Index: ChangeLog
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/ChangeLog,v
retrieving revision 1.1487.2.149
retrieving revision 1.1487.2.150
diff -LChangeLog -LChangeLog -u -r1.1487.2.149 -r1.1487.2.150
--- ChangeLog
+++ ChangeLog
@@ -1,3 +1,16 @@
+2004-12-18  Derek Atkins  <derek at ihtfp.com>
+
+	Stephen Evanchik's GncDenseCal GObject patch:
+        * src/gnome-utils/gnc-dense-cal.h:
+          Added #include <glib.h>
+          Added private member 'disposed' to GncDenseCal struct
+          Added GNC_TYPE_DENSE_CAL macro
+        * src/gnome-utils/gnc-dense-cal.c:
+          Converted the following functions to use GObject:
+                gnc_dense_cal_get_type,
+                gnc_dense_cal_class_init
+          Renamed gnc_dense_cal_destroy to gnc_dense_cal_dispose
+
 2004-12-17  Derek Atkins  <derek at ihtfp.com>
 
 	Stephen Evanchik's GNCDateEdit GObject patch:
Index: gnc-dense-cal.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/gnome-utils/gnc-dense-cal.c,v
retrieving revision 1.11.4.8
retrieving revision 1.11.4.9
diff -Lsrc/gnome-utils/gnc-dense-cal.c -Lsrc/gnome-utils/gnc-dense-cal.c -u -r1.11.4.8 -r1.11.4.9
--- src/gnome-utils/gnc-dense-cal.c
+++ src/gnome-utils/gnc-dense-cal.c
@@ -101,7 +101,7 @@
 static void gnc_dense_cal_class_init (GncDenseCalClass *class);
 static void gnc_dense_cal_init (GncDenseCal *dcal);
 static void gnc_dense_cal_finalize (GObject *object);
-static void gnc_dense_cal_destroy (GtkObject *object);
+static void gnc_dense_cal_dispose (GObject *object);
 static void gnc_dense_cal_realize (GtkWidget *widget);
 static void gnc_dense_cal_draw_to_buffer( GncDenseCal *dcal );
 static gint gnc_dense_cal_expose( GtkWidget      *widget,
@@ -200,43 +200,43 @@
 }
 
 
-GtkType
+GType
 gnc_dense_cal_get_type ()
 {
-        static GtkType dense_cal_type = 0;
+        static GType dense_cal_type = 0;
 
-        if (!dense_cal_type)
-        {
-                static const GtkTypeInfo dense_cal_info =
-                        {
-                                "GncDenseCal",
-                                sizeof (GncDenseCal),
+        if (dense_cal_type == 0) {
+                static const GTypeInfo dense_cal_info = {
                                 sizeof (GncDenseCalClass),
-                                (GtkClassInitFunc) gnc_dense_cal_class_init,
-                                (GtkObjectInitFunc) gnc_dense_cal_init,
-                                /* reserved_1 */ NULL,
-                                /* reserved_1 */ NULL,
-                                (GtkClassInitFunc) NULL
-                        };
-
-                dense_cal_type =
-                        gtk_type_unique (GTK_TYPE_WIDGET, &dense_cal_info);
+				NULL,
+				NULL,
+                                (GClassInitFunc) gnc_dense_cal_class_init,
+				NULL,
+				NULL,
+                                sizeof (GncDenseCal),
+				0,  /* n_preallocs */
+                                (GInstanceInitFunc) gnc_dense_cal_init,
+                                NULL
+		};
+
+                dense_cal_type = g_type_register_static(GTK_TYPE_WIDGET,
+						"GncDenseCal",
+						&dense_cal_info, 0);
         }
 
         return dense_cal_type;
 }
 
 static void
-gnc_dense_cal_class_init (GncDenseCalClass *class)
+gnc_dense_cal_class_init (GncDenseCalClass *klass)
 {
         GObjectClass *object_class;
-	GtkObjectClass *gtkobject_class;
         GtkWidgetClass *widget_class;
 
-        object_class =  G_OBJECT_CLASS (class);
-	gtkobject_class = GTK_OBJECT_CLASS (class);
-        widget_class = GTK_WIDGET_CLASS (class);
-        parent_class = g_type_class_peek_parent (class);
+        object_class =  G_OBJECT_CLASS (klass);
+        widget_class = GTK_WIDGET_CLASS (klass);
+
+        parent_class = g_type_class_peek_parent (klass);
 
         gnc_dense_cal_signals[MARKS_LOST_SIGNAL] =
                 g_signal_new (MARKS_LOST_SIGNAL_NAME,
@@ -249,7 +249,8 @@
 			      0);
 
         object_class->finalize = gnc_dense_cal_finalize;
-        gtkobject_class->destroy = gnc_dense_cal_destroy;
+        object_class->dispose = gnc_dense_cal_dispose;
+
         widget_class->realize = gnc_dense_cal_realize;
         widget_class->expose_event = gnc_dense_cal_expose;
         widget_class->size_request = gnc_dense_cal_size_request;
@@ -263,6 +264,7 @@
 {
         gboolean colorAllocSuccess;
 
+        dcal->disposed = FALSE;
         dcal->initialized = FALSE;
         dcal->markData = NULL;
         dcal->numMarks = 0;
@@ -471,7 +473,7 @@
 }
 
 static void
-gnc_dense_cal_destroy (GtkObject *object)
+gnc_dense_cal_dispose (GObject *object)
 {
         int i;
         GncDenseCal *dcal;
@@ -480,6 +482,11 @@
 
         dcal = GNC_DENSE_CAL(object);
 
+	if(dcal->disposed)
+		return;
+
+	dcal->disposed = TRUE;
+
         if ( GTK_WIDGET_REALIZED( dcal->transPopup ) ) {
                 gtk_widget_hide( GTK_WIDGET(dcal->transPopup) );
                 gtk_widget_destroy( GTK_WIDGET(dcal->transPopup) );
@@ -511,8 +518,8 @@
         /* mark data */
         gdc_free_all_mark_data( dcal );
 
-        if (GTK_OBJECT_CLASS (parent_class)->destroy)
-                (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+        if (G_OBJECT_CLASS (parent_class)->dispose)
+                (* G_OBJECT_CLASS (parent_class)->dispose) (object);
 }
 
 static void
Index: gnc-dense-cal.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/gnome-utils/gnc-dense-cal.h,v
retrieving revision 1.3
retrieving revision 1.3.4.1
diff -Lsrc/gnome-utils/gnc-dense-cal.h -Lsrc/gnome-utils/gnc-dense-cal.h -u -r1.3 -r1.3.4.1
--- src/gnome-utils/gnc-dense-cal.h
+++ src/gnome-utils/gnc-dense-cal.h
@@ -26,11 +26,13 @@
 #include <gdk/gdk.h>
 #include <gtk/gtkadjustment.h>
 #include <gtk/gtkwidget.h>
+#include <glib.h>
 
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
 
+#define GNC_TYPE_DENSE_CAL          (gnc_dense_cal_get_type ()) 
 #define GNC_DENSE_CAL(obj)          GTK_CHECK_CAST (obj, gnc_dense_cal_get_type (), GncDenseCal)
 #define GNC_DENSE_CAL_CLASS(klass)  GTK_CHECK_CLASS_CAST (klass, gnc_dense_cal_get_type (), GncDenseCalClass)
 #define GNC_IS_DENSE_CAL(obj)       GTK_CHECK_TYPE (obj, gnc_dense_cal_get_type ())
@@ -67,7 +69,7 @@
 
         gint numMonths;
         gint monthsPerCol;
-        gint num_weeks; // computed
+        gint num_weeks; /* computed */
 
         GDateMonth month;
         gint year;
@@ -99,6 +101,8 @@
         int numMarks;
         /* array of GList*s of per-cell markings. */
         GList **marks;
+
+	int disposed; /* private */
 };
 
 struct _GncDenseCalClass
@@ -111,7 +115,7 @@
         gchar *name;
         gchar *info;
         guint tag;
-        // GdkColor markStyle;
+        /* GdkColor markStyle; */
         /**
          * A GList of the dcal->marks indexes containing this mark.
          **/
@@ -119,7 +123,7 @@
 } gdc_mark_data;
 
 GtkWidget*     gnc_dense_cal_new                    (void);
-GtkType        gnc_dense_cal_get_type               (void);
+GType          gnc_dense_cal_get_type               (void);
 
 void gnc_dense_cal_set_month( GncDenseCal *dcal, GDateMonth mon );
 /**


More information about the gnucash-changes mailing list