[Gnucash-changes] Stephen Evanchik's GncGeneralSelect GObject
cleanup patch.
Joshua Sled
jsled at cvs.gnucash.org
Thu Dec 16 21:06:15 EST 2004
Log Message:
-----------
Stephen Evanchik's GncGeneralSelect GObject cleanup patch.
Tags:
----
gnucash-gnome2-dev
Modified Files:
--------------
gnucash:
ChangeLog
gnucash/src/gnome-utils:
gnc-general-select.c
gnc-general-select.h
Revision Data
-------------
Index: ChangeLog
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/ChangeLog,v
retrieving revision 1.1487.2.147
retrieving revision 1.1487.2.148
diff -LChangeLog -LChangeLog -u -r1.1487.2.147 -r1.1487.2.148
--- ChangeLog
+++ ChangeLog
@@ -1,3 +1,17 @@
+2004-12-16 Joshua Sled <jsled at asynchronous.org>
+
+ Stephen Evanchik's GncGeneralSelect GObject cleanup patch:
+ * src/gnome-utils/gnc-general-select.h:
+ Removed #include <glib-object.h>
+ Added #include <glib.h>
+ Added private member 'disposed' to GNCGeneralSelect
+ * src/gnome-utils/gnc-general-select.c:
+ Converted the following functions to use GObject:
+ gnc_general_select_get_type,
+ gnc_general_select_class_init
+ Added gnc_general_select_dispose function that handles
+ child widget destruction
+
2004-12-15 Joshua Sled <jsled at asynchronous.org>
* src/register/register-gnome/gnucash-item-edit.c
Index: gnc-general-select.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/gnome-utils/gnc-general-select.c,v
retrieving revision 1.3.4.5
retrieving revision 1.3.4.6
diff -Lsrc/gnome-utils/gnc-general-select.c -Lsrc/gnome-utils/gnc-general-select.c -u -r1.3.4.5 -r1.3.4.6
--- src/gnome-utils/gnc-general-select.c
+++ src/gnome-utils/gnc-general-select.c
@@ -45,6 +45,7 @@
static void gnc_general_select_init (GNCGeneralSelect *gsl);
static void gnc_general_select_class_init (GNCGeneralSelectClass *class);
+static void gnc_general_select_dispose (GObject *object);
static void gnc_general_select_finalize (GObject *object);
static GtkHBoxClass *parent_class;
@@ -56,24 +57,28 @@
*
* Returns the GtkType for the GNCGeneralSelect widget
*/
-guint
+GType
gnc_general_select_get_type (void)
{
- static guint general_select_type = 0;
+ static GType general_select_type = 0;
- if (!general_select_type){
- GtkTypeInfo general_select_info = {
- "GNCGeneralSelect",
- sizeof (GNCGeneralSelect),
+ if (general_select_type == 0) {
+ static const GTypeInfo general_select_info = {
sizeof (GNCGeneralSelectClass),
- (GtkClassInitFunc) gnc_general_select_class_init,
- (GtkObjectInitFunc) gnc_general_select_init,
NULL,
NULL,
+ (GClassInitFunc) gnc_general_select_class_init,
+ NULL,
+ NULL,
+ sizeof (GNCGeneralSelect),
+ 0,
+ (GInstanceInitFunc) gnc_general_select_init,
+ NULL,
};
- general_select_type = gtk_type_unique (gtk_hbox_get_type (),
- &general_select_info);
+ general_select_type = g_type_register_static(GTK_TYPE_HBOX,
+ "GNCGeneralSelect",
+ &general_select_info, 0);
}
return general_select_type;
@@ -109,19 +114,21 @@
object_class = (GObjectClass*) klass;
- parent_class = gtk_type_class (gtk_hbox_get_type ());
+ parent_class = g_type_class_ref(GTK_TYPE_HBOX);
general_select_signals[SELECTION_CHANGED] =
- gtk_signal_new("changed",
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET(GNCGeneralSelectClass,
- changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
+ g_signal_new("changed",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(GNCGeneralSelectClass,
+ changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
container_class->forall = gnc_general_select_forall;
+ object_class->dispose = gnc_general_select_dispose;
object_class->finalize = gnc_general_select_finalize;
klass->changed = NULL;
@@ -130,6 +137,7 @@
static void
gnc_general_select_init (GNCGeneralSelect *gsl)
{
+ gsl->disposed = FALSE;
gsl->selected_item = NULL;
}
@@ -143,14 +151,39 @@
gsl = GNC_GENERAL_SELECT (object);
- gsl->entry = NULL;
- gsl->button = NULL;
if (G_OBJECT_CLASS (parent_class)->finalize)
G_OBJECT_CLASS (parent_class)->finalize (object);
}
static void
+gnc_general_select_dispose (GObject *object)
+{
+ GNCGeneralSelect *gsl;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (GNC_IS_GENERAL_SELECT (object));
+
+ gsl = GNC_GENERAL_SELECT (object);
+
+ if(gsl->disposed)
+ return;
+
+ gsl->disposed = TRUE;
+
+
+ gtk_widget_destroy(GTK_WIDGET(gsl->entry));
+ gsl->entry = NULL;
+
+ gtk_widget_destroy(GTK_WIDGET(gsl->button));
+ gsl->button = NULL;
+
+
+ if (G_OBJECT_CLASS (parent_class)->dispose)
+ G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
select_cb(GtkButton * button, gpointer user_data)
{
GNCGeneralSelect *gsl = user_data;
Index: gnc-general-select.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/gnome-utils/gnc-general-select.h,v
retrieving revision 1.3.4.1
retrieving revision 1.3.4.2
diff -Lsrc/gnome-utils/gnc-general-select.h -Lsrc/gnome-utils/gnc-general-select.h -u -r1.3.4.1 -r1.3.4.2
--- src/gnome-utils/gnc-general-select.h
+++ src/gnome-utils/gnc-general-select.h
@@ -32,6 +32,7 @@
#define GNC_GENERAL_SELECT_H
#include <gnome.h>
+#include <glib.h>
#define GNC_GENERAL_SELECT(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, gnc_general_select_get_type(), GNCGeneralSelect)
#define GNC_GENERAL_SELECT_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, gnc_general_select_get_type(), \ GNCGeneralSelectClass)
@@ -57,6 +58,8 @@
GNCGeneralSelectGetStringCB get_string;
GNCGeneralSelectNewSelectCB new_select;
gpointer cb_arg;
+
+ int disposed; /* private */
} GNCGeneralSelect;
typedef struct {
@@ -75,7 +78,7 @@
gpointer gnc_general_select_get_selected (GNCGeneralSelect *gsl);
const char *gnc_general_select_get_printname (GNCGeneralSelect *gsl,
gpointer selection);
-guint gnc_general_select_get_type (void);
+GType gnc_general_select_get_type (void);
#endif
More information about the gnucash-changes
mailing list