[gnome-commander] Use G_DEFINE_TYPE for ImageRender
- From: Piotr Eljasiak <epiotr src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-commander] Use G_DEFINE_TYPE for ImageRender
- Date: Wed, 27 Jul 2011 20:57:23 +0000 (UTC)
commit 796a28696c4b3f755a9034ae3cb925dc75dcbf92
Author: Piotr Eljasiak <epiotr src gnome org>
Date: Wed Jul 27 22:54:02 2011 +0200
Use G_DEFINE_TYPE for ImageRender
src/intviewer/image-render.cc | 116 +++++++++++++---------------------------
src/intviewer/image-render.h | 9 +++-
2 files changed, 45 insertions(+), 80 deletions(-)
---
diff --git a/src/intviewer/image-render.cc b/src/intviewer/image-render.cc
index 0bb5121..1ca5a0f 100644
--- a/src/intviewer/image-render.cc
+++ b/src/intviewer/image-render.cc
@@ -47,8 +47,6 @@ using namespace std;
#define IMAGE_RENDER_DEFAULT_HEIGHT 200
-static GtkWidgetClass *parent_class = NULL;
-
enum {
IMAGE_STATUS_CHANGED,
LAST_SIGNAL
@@ -91,11 +89,11 @@ struct ImageRender::Private
gint orig_pixbuf_loaded;
};
-// Gtk class related static functions
-static void image_render_init (ImageRender *w);
-static void image_render_class_init (ImageRenderClass *klass);
-static void image_render_destroy (GtkObject *object);
+G_DEFINE_TYPE (ImageRender, image_render, GTK_TYPE_WIDGET)
+
+
+// Gtk class related static functions
static void image_render_redraw (ImageRender *w);
static gboolean image_render_key_press (GtkWidget *widget, GdkEventKey *event);
@@ -126,36 +124,6 @@ static void image_render_update_adjustments (ImageRender *obj);
public functions
(defined in the header file)
*****************************************/
-GtkType image_render_get_type ()
-{
- static GtkType type = 0;
- if (type == 0)
- {
- GtkTypeInfo info =
- {
- "ImageRender",
- sizeof (ImageRender),
- sizeof (ImageRenderClass),
- (GtkClassInitFunc) image_render_class_init,
- (GtkObjectInitFunc) image_render_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL
- };
- type = gtk_type_unique (gtk_widget_get_type(), &info);
- }
- return type;
-}
-
-
-GtkWidget *image_render_new ()
-{
- ImageRender *w = (ImageRender *) g_object_new (image_render_get_type (), NULL);
-
- return GTK_WIDGET (w);
-}
-
-
void image_render_set_h_adjustment (ImageRender *obj, GtkAdjustment *adjustment)
{
g_return_if_fail (IS_IMAGE_RENDER(obj));
@@ -214,39 +182,6 @@ void image_render_set_v_adjustment (ImageRender *obj, GtkAdjustment *adjustment)
}
-static void image_render_class_init (ImageRenderClass *klass)
-{
- GtkObjectClass *object_class = GTK_OBJECT_CLASS (klass);
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
-
- parent_class = (GtkWidgetClass *) gtk_type_class (gtk_widget_get_type ());
-
- object_class->destroy = image_render_destroy;
-
- widget_class->key_press_event = image_render_key_press;
- widget_class->button_press_event = image_render_button_press;
- widget_class->button_release_event = image_render_button_release;
- widget_class->motion_notify_event = image_render_motion_notify;
-
- widget_class->expose_event = image_render_expose;
-
- widget_class->size_request = image_render_size_request;
- widget_class->size_allocate = image_render_size_allocate;
-
- widget_class->realize = image_render_realize;
-
- image_render_signals[IMAGE_STATUS_CHANGED] =
- g_signal_new ("image-status-changed",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ImageRenderClass, image_status_changed),
- NULL, NULL,
- g_cclosure_marshal_VOID__POINTER,
- G_TYPE_NONE,
- 1, G_TYPE_POINTER);
-}
-
-
static void image_render_init (ImageRender *w)
{
w->priv = g_new0 (ImageRender::Private, 1);
@@ -271,14 +206,12 @@ static void image_render_init (ImageRender *w)
w->priv->orig_pixbuf = NULL;
w->priv->disp_pixbuf = NULL;
- GTK_WIDGET_SET_FLAGS(GTK_WIDGET (w), GTK_CAN_FOCUS);
+ GTK_WIDGET_SET_FLAGS (GTK_WIDGET (w), GTK_CAN_FOCUS);
}
-static void image_render_destroy (GtkObject *object)
+static void image_render_finalize (GObject *object)
{
- g_return_if_fail (IS_IMAGE_RENDER (object));
-
ImageRender *w = IMAGE_RENDER (object);
if (w->priv)
@@ -303,19 +236,46 @@ static void image_render_destroy (GtkObject *object)
if (w->priv->v_adjustment)
g_object_unref (w->priv->v_adjustment);
- w->priv->v_adjustment = NULL;
if (w->priv->h_adjustment)
g_object_unref (w->priv->h_adjustment);
- w->priv->h_adjustment = NULL;
g_free (w->priv);
- w->priv = NULL;
}
}
- if (GTK_OBJECT_CLASS(parent_class)->destroy)
- (*GTK_OBJECT_CLASS(parent_class)->destroy) (object);
+ G_OBJECT_CLASS (image_render_parent_class)->finalize (object);
+}
+
+
+static void image_render_class_init (ImageRenderClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+ object_class->finalize = image_render_finalize;
+
+ widget_class->key_press_event = image_render_key_press;
+ widget_class->button_press_event = image_render_button_press;
+ widget_class->button_release_event = image_render_button_release;
+ widget_class->motion_notify_event = image_render_motion_notify;
+
+ widget_class->expose_event = image_render_expose;
+
+ widget_class->size_request = image_render_size_request;
+ widget_class->size_allocate = image_render_size_allocate;
+
+ widget_class->realize = image_render_realize;
+
+ image_render_signals[IMAGE_STATUS_CHANGED] =
+ g_signal_new ("image-status-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ImageRenderClass, image_status_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE,
+ 1, G_TYPE_POINTER);
}
diff --git a/src/intviewer/image-render.h b/src/intviewer/image-render.h
index d8fa1cd..e12a8fa 100644
--- a/src/intviewer/image-render.h
+++ b/src/intviewer/image-render.h
@@ -33,6 +33,9 @@
#define IMAGE_RENDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), TYPE_IMAGE_RENDER, ImageRenderClass))
+GType image_render_get_type ();
+
+
struct ImageRender
{
GtkWidget parent;
@@ -60,8 +63,10 @@ enum IMAGEOPERATION
FLIP_HORIZONTAL
};
-GtkWidget *image_render_new ();
-GtkType image_render_get_type ();
+inline GtkWidget *image_render_new ()
+{
+ return (GtkWidget *) g_object_new (TYPE_IMAGE_RENDER, NULL);
+}
GtkAdjustment *image_render_get_h_adjustment (ImageRender *obj);
void image_render_set_h_adjustment (ImageRender *obj, GtkAdjustment *adjustment);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]