[gnome-commander] Use G_DEFINE_TYPE for GnomeCmdFile



commit 348041ee38f8904e55fa92257f577755805585e2
Author: Piotr Eljasiak <epiotr src gnome org>
Date:   Mon Jan 31 20:57:19 2011 +0100

    Use G_DEFINE_TYPE for GnomeCmdFile

 src/gnome-cmd-file.cc |   88 ++++++++++++++++---------------------------------
 src/gnome-cmd-file.h  |    6 ++--
 2 files changed, 32 insertions(+), 62 deletions(-)
---
diff --git a/src/gnome-cmd-file.cc b/src/gnome-cmd-file.cc
index 3ad72d3..390d420 100644
--- a/src/gnome-cmd-file.cc
+++ b/src/gnome-cmd-file.cc
@@ -49,8 +49,6 @@ gint created_files_cnt = 0;
 gint deleted_files_cnt = 0;
 GList *all_files = NULL;
 
-static GnomeCmdFileInfoClass *parent_class = NULL;
-
 struct GnomeCmdFile::Private
 {
     Handle *dir_handle;
@@ -60,6 +58,9 @@ struct GnomeCmdFile::Private
 };
 
 
+G_DEFINE_TYPE (GnomeCmdFile, gnome_cmd_file, GNOME_CMD_TYPE_FILE_INFO)
+
+
 inline gboolean has_parent_dir (GnomeCmdFile *f)
 {
     return f->priv->dir_handle && f->priv->dir_handle->ref;
@@ -74,11 +75,29 @@ inline GnomeCmdDir *get_parent_dir (GnomeCmdFile *f)
 }
 
 
-/*******************************
- * Gtk class implementation
- *******************************/
+static void gnome_cmd_file_init (GnomeCmdFile *f)
+{
+    // f->info = NULL;
+    // f->collate_key = NULL;
+
+    f->priv = g_new0 (GnomeCmdFile::Private, 1);
+
+    // f->priv->dir_handle = NULL;
 
-static void destroy (GtkObject *object)
+    // f->priv->last_update.tv_sec = 0;
+    // f->priv->last_update.tv_usec = 0;
+
+    f->priv->tree_size = -1;
+
+    if (DEBUG_ENABLED ('c'))
+    {
+        all_files = g_list_append (all_files, f);
+        created_files_cnt++;
+    }
+}
+
+
+static void gnome_cmd_file_finalize (GObject *object)
 {
     GnomeCmdFile *f = GNOME_CMD_FILE (object);
 
@@ -100,40 +119,15 @@ static void destroy (GtkObject *object)
 
     g_free (f->priv);
 
-    if (GTK_OBJECT_CLASS (parent_class)->destroy)
-        (*GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+    G_OBJECT_CLASS (gnome_cmd_file_parent_class)->finalize (object);
 }
 
 
-static void class_init (GnomeCmdFileClass *klass)
+static void gnome_cmd_file_class_init (GnomeCmdFileClass *klass)
 {
-    GtkObjectClass *object_class = GTK_OBJECT_CLASS (klass);
-
-    parent_class = (GnomeCmdFileInfoClass *) gtk_type_class (GNOME_CMD_TYPE_FILE_INFO);
+    GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-    object_class->destroy = destroy;
-}
-
-
-static void init (GnomeCmdFile *f)
-{
-    // f->info = NULL;
-    // f->collate_key = NULL;
-
-    f->priv = g_new0 (GnomeCmdFile::Private, 1);
-
-    // f->priv->dir_handle = NULL;
-
-    // f->priv->last_update.tv_sec = 0;
-    // f->priv->last_update.tv_usec = 0;
-
-    f->priv->tree_size = -1;
-
-    if (DEBUG_ENABLED ('c'))
-    {
-        all_files = g_list_append (all_files, f);
-        created_files_cnt++;
-    }
+    object_class->finalize = gnome_cmd_file_finalize;
 }
 
 
@@ -141,30 +135,6 @@ static void init (GnomeCmdFile *f)
  * Public functions
  ***********************************/
 
-GtkType gnome_cmd_file_get_type ()
-{
-    static GtkType type = 0;
-
-    if (type == 0)
-    {
-        GtkTypeInfo info =
-        {
-            "GnomeCmdFile",
-            sizeof (GnomeCmdFile),
-            sizeof (GnomeCmdFileClass),
-            (GtkClassInitFunc) class_init,
-            (GtkObjectInitFunc) init,
-            /* reserved_1 */ NULL,
-            /* reserved_2 */ NULL,
-            (GtkClassInitFunc) NULL
-        };
-
-        type = gtk_type_unique (GNOME_CMD_TYPE_FILE_INFO, &info);
-    }
-    return type;
-}
-
-
 GnomeCmdFile *gnome_cmd_file_new (GnomeVFSFileInfo *info, GnomeCmdDir *dir)
 {
     GnomeCmdFile *f = (GnomeCmdFile *) g_object_new (GNOME_CMD_TYPE_FILE, NULL);
diff --git a/src/gnome-cmd-file.h b/src/gnome-cmd-file.h
index b8a04f6..88c3333 100644
--- a/src/gnome-cmd-file.h
+++ b/src/gnome-cmd-file.h
@@ -29,6 +29,9 @@
 #define GNOME_CMD_FILE_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS((obj), GNOME_CMD_TYPE_FILE, GnomeCmdFileClass))
 
 
+GType gnome_cmd_file_get_type ();
+
+
 class GnomeCmdFileMetadata;
 
 struct GnomeCmdDir;
@@ -109,9 +112,6 @@ struct GnomeCmdFileClass
 };
 
 
-GtkType gnome_cmd_file_get_type ();
-
-
 inline gchar *GnomeCmdFile::get_name()
 {
     g_return_val_if_fail (info != NULL, NULL);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]