Stephen Evanchik's GncGeneralSelect GObject cleanup patch.

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/branches/gnucash-gnome2-dev@10376 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Joshua Sled
2004-12-17 02:06:12 +00:00
parent 8c2514fde3
commit b223dbd9b2
3 changed files with 71 additions and 21 deletions

View File

@@ -1,3 +1,17 @@
2004-12-16 Joshua Sled <jsled@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@asynchronous.org>
* src/register/register-gnome/gnucash-item-edit.c

View File

@@ -45,6 +45,7 @@ enum
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 @@ static guint general_select_signals[LAST_SIGNAL];
*
* 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 @@ gnc_general_select_class_init (GNCGeneralSelectClass *klass)
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 @@ gnc_general_select_class_init (GNCGeneralSelectClass *klass)
static void
gnc_general_select_init (GNCGeneralSelect *gsl)
{
gsl->disposed = FALSE;
gsl->selected_item = NULL;
}
@@ -143,13 +151,38 @@ gnc_general_select_finalize (GObject *object)
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)
{

View File

@@ -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 @@ typedef struct {
GNCGeneralSelectGetStringCB get_string;
GNCGeneralSelectNewSelectCB new_select;
gpointer cb_arg;
int disposed; /* private */
} GNCGeneralSelect;
typedef struct {
@@ -75,7 +78,7 @@ void gnc_general_select_set_selected (GNCGeneralSelect *gsl,
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