Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "gtk-display.h"
- /* Properties */
- enum {
- PROP_0,
- PROP_TEXT
- };
- struct _GtkDisplayPrivate {
- gchar *text;
- };
- static const char *default_text = "ohai";
- G_DEFINE_TYPE (GtkDisplay, gtk_display, GTK_TYPE_LABEL)
- /* Prototypes. */
- static void gtk_display_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
- static void gtk_display_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
- /* static GObject *gtk_display_constructor (GType type,
- guint n_construct_properties,
- GObjectConstructParam *construct_param); */
- static void gtk_display_finalize (GObject *object);
- static void gtk_display_dispose (GObject *object);
- //static void gtk_display_destroy (GtkObject *object);
- /* Private functions. */
- //initialize the class itself
- static void
- gtk_display_class_init (GtkDisplayClass *klass) {
- GObjectClass *object_class;
- GtkDisplayClass *gtkdisplay_class;
- GtkWidgetClass *widget_class;
- //GtkObjectClass *gtk_object_class;
- object_class = G_OBJECT_CLASS (klass);
- gtkdisplay_class = GTK_DISPLAY_CLASS (klass);
- widget_class = GTK_WIDGET_CLASS (klass);
- //gtk_object_class = GTK_OBJECT_CLASS (klass);
- //object_class->constructor = gtk_display_constructor;
- object_class->finalize = gtk_display_finalize;
- object_class->dispose = gtk_display_dispose;
- object_class->get_property = gtk_display_get_property;
- object_class->set_property = gtk_display_set_property;
- //gtk_object_class->destroy = gtk_display_destroy;
- g_type_class_add_private(klass, sizeof(GtkDisplayPrivate));
- /**
- * GtkDisplay:text:
- *
- * The text to display
- */
- g_object_class_install_property (object_class,
- PROP_TEXT,
- g_param_spec_string ("text",
- ("Text"),
- ("The text to display"),
- default_text,
- (GParamFlags)G_PARAM_READWRITE));
- }
- static void
- gtk_display_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
- {
- GtkDisplay *widget;
- g_return_if_fail(GTK_IS_DISPLAY (object));
- widget = GTK_DISPLAY(object);
- switch(prop_id) {
- case PROP_TEXT:
- g_free(widget->priv->text);
- widget->priv->text = g_value_dup_string (value);
- gtk_label_set_text(GTK_LABEL(widget), widget->priv->text);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
- }
- static void
- gtk_display_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
- {
- GtkDisplay *widget;
- g_return_if_fail(GTK_IS_DISPLAY (object));
- widget = GTK_DISPLAY(object);
- switch (prop_id) {
- case PROP_TEXT:
- g_value_set_string (value, widget->priv->text);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
- }
- //called from constructor
- static void
- gtk_display_init (GtkDisplay *widget)
- {
- printf("gtk_display_init %p\n", widget);
- widget->priv = G_TYPE_INSTANCE_GET_PRIVATE (widget, GTK_TYPE_DISPLAY,
- GtkDisplayPrivate);
- widget->priv->text = g_strdup(default_text);
- gtk_label_set_text(GTK_LABEL(widget), widget->priv->text);
- }
- //responsible for creating the object (by calling the parent class constructor)
- //generally we don't need to implement this
- /*
- static GObject *
- gtk_display_constructor (GType type,
- guint n_construct_properties,
- GObjectConstructParam *construct_param)
- {
- printf("gtk_display_constructor begin\n");
- GObject *object;
- GtkDisplay *widget;
- object = G_OBJECT_CLASS(gtk_display_parent_class)->constructor(type,
- n_construct_properties,
- construct_param);
- widget = GTK_DISPLAY(object);
- printf("gtk_display_constructor %p\n", widget);
- return object;
- } */
- //actually deallocate the object and anything it may have allocated
- static void
- gtk_display_finalize (GObject *object)
- {
- printf("gtk_display_finalize %p\n", object);
- GtkDisplay *widget;
- g_return_if_fail (object != NULL);
- g_return_if_fail (GTK_IS_DISPLAY(object));
- widget = GTK_DISPLAY (object);
- g_free(widget->priv->text);
- widget->priv->text = NULL;
- G_OBJECT_CLASS (gtk_display_parent_class)->finalize (object);
- }
- //clear out any references and set the object to a state where using it won't
- //cause any crash
- static void
- gtk_display_dispose (GObject *object)
- {
- printf("gtk_display_dispose %p\n", object);
- GtkDisplay *widget = GTK_DISPLAY (object);
- G_OBJECT_CLASS (gtk_display_parent_class)->dispose (object);
- }
- //called from GtkWidget::dispose() - we don't generally need to implement this
- /* static void
- gtk_display_destroy (GtkObject *object)
- {
- printf("gtk_display_destroy %p\n", object);
- GtkDisplay *widget = GTK_DISPLAY (object);
- g_free(widget->priv->text);
- widget->priv->text = NULL;
- GTK_OBJECT_CLASS (gtk_display_parent_class)->destroy (object);
- printf("gtk_display_destroy %p end\n", object);
- } */
- /* ----------------------------------------------------------------------
- * Public interface
- * ---------------------------------------------------------------------- */
- /**
- * gtk_display_new:
- *
- * Creates a new #GtkDisplay.
- *
- * Return value: a new #GtkDisplay.
- **/
- GtkWidget *
- gtk_display_new (void)
- {
- GtkWidget *widget;
- widget = (GtkWidget*)g_object_new(GTK_TYPE_DISPLAY, NULL);
- return widget;
- }
- /**
- * gtk_display_new_with_text:
- * @text: initial text to display.
- *
- * Creates a new #GtkDisplay displaying the text @text.
- *
- * Return value: a new #GtkDisplay.
- **/
- GtkWidget *
- gtk_display_new_with_text (gchar *text)
- {
- GtkWidget *widget = gtk_display_new();
- g_object_set(G_OBJECT(widget), "text", text, NULL);
- return widget;
- }
- /**
- * gtk_display_get_text:
- * @widget: a #GtkDisplay.
- *
- * Returns the text displayed in the widget.
- *
- * Return value: The text of the widget. This string is owned by the widget
- * and must not be modified or freed.
- **/
- gchar *
- gtk_display_get_text (GtkDisplay *widget)
- {
- return widget->priv->text;
- }
- /**
- * gtk_display_set_text:
- * @widget: a #GtkDisplay.
- * @text: text to display.
- **/
- void
- gtk_display_set_text (GtkDisplay *widget,
- gchar *text)
- {
- g_object_set(G_OBJECT(widget), "text", text, NULL);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement