[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