2024-04-14 16:29:02 +02:00
|
|
|
#include "base.h"
|
2024-04-17 01:05:53 +02:00
|
|
|
#include "shell.h"
|
2024-04-14 16:29:02 +02:00
|
|
|
|
|
|
|
G_DEFINE_ABSTRACT_TYPE(DiyaObject, diya_object, G_TYPE_OBJECT)
|
|
|
|
|
2024-04-17 01:05:53 +02:00
|
|
|
|
|
|
|
static void diya_object_dispose(GObject* object)
|
|
|
|
{
|
|
|
|
g_debug("diya_object_dispose");
|
|
|
|
G_OBJECT_CLASS (diya_object_parent_class)->dispose(object);
|
|
|
|
}
|
|
|
|
|
2024-04-14 16:29:02 +02:00
|
|
|
static void diya_object_class_init(DiyaObjectClass *class)
|
|
|
|
{
|
2024-04-17 01:05:53 +02:00
|
|
|
GObjectClass *gobject_class = G_OBJECT_CLASS(class);
|
2024-04-14 16:29:02 +02:00
|
|
|
class->to_string = NULL;
|
2024-04-17 01:05:53 +02:00
|
|
|
gobject_class->dispose = diya_object_dispose;
|
2024-04-14 16:29:02 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
static void diya_object_init(DiyaObject *self)
|
|
|
|
{
|
|
|
|
(void) self;
|
|
|
|
}
|
|
|
|
|
2024-04-17 01:05:53 +02:00
|
|
|
enum
|
|
|
|
{
|
|
|
|
SO_NO_PROP,
|
|
|
|
SO_SHELL,
|
|
|
|
SO_N_PROPERTIES
|
|
|
|
};
|
|
|
|
|
|
|
|
static GParamSpec *g_so_prop[SO_N_PROPERTIES] = {0};
|
|
|
|
|
|
|
|
typedef struct _DiyaShellObjectPrivate
|
|
|
|
{
|
|
|
|
DiyaObject * parent;
|
|
|
|
DiyaShell * shell;
|
|
|
|
} DiyaShellObjectPrivate;
|
|
|
|
G_DEFINE_TYPE_WITH_PRIVATE(DiyaShellObject, diya_shell_object, DIYA_TYPE_OBJECT);
|
|
|
|
|
|
|
|
static void diya_shell_object_dispose(GObject* object)
|
|
|
|
{
|
|
|
|
g_debug("diya_shell_object_dispose");
|
|
|
|
G_OBJECT_CLASS(diya_shell_object_parent_class)->dispose(object);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void diya_shell_object_set_property(GObject *object, guint property_id, const GValue *value, GParamSpec *pspec)
|
|
|
|
{
|
|
|
|
DiyaShellObject * self = DIYA_SHELL_OBJECT(object);
|
|
|
|
DiyaShellObjectPrivate* priv = diya_shell_object_get_instance_private(self);
|
|
|
|
|
|
|
|
switch (property_id)
|
|
|
|
{
|
|
|
|
case SO_SHELL:
|
|
|
|
priv->shell = g_value_get_pointer(value);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void diya_shell_object_get_property(GObject *object, guint property_id, GValue *value, GParamSpec *pspec)
|
|
|
|
{
|
|
|
|
DiyaShellObject * self = DIYA_SHELL_OBJECT(object);
|
|
|
|
DiyaShellObjectPrivate* priv = diya_shell_object_get_instance_private(self);
|
|
|
|
switch (property_id)
|
|
|
|
{
|
|
|
|
case SO_SHELL:
|
|
|
|
g_value_set_pointer(value, priv->shell);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static void diya_shell_object_init(DiyaShellObject *self)
|
|
|
|
{
|
|
|
|
DiyaShellObjectPrivate* priv = diya_shell_object_get_instance_private(self);
|
|
|
|
priv->shell = NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void diya_shell_object_class_init(DiyaShellObjectClass *class)
|
|
|
|
{
|
|
|
|
GObjectClass *gobject_class = G_OBJECT_CLASS(class);
|
|
|
|
gobject_class->dispose = diya_shell_object_dispose;
|
|
|
|
gobject_class->set_property = diya_shell_object_set_property;
|
|
|
|
gobject_class->get_property = diya_shell_object_get_property;
|
|
|
|
g_so_prop[SO_SHELL] = g_param_spec_pointer("shell", NULL, "Reference to global shell", G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); //
|
|
|
|
|
|
|
|
g_object_class_install_properties (gobject_class, SO_N_PROPERTIES, g_so_prop);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2024-04-14 16:29:02 +02:00
|
|
|
const gchar * diya_object_to_string(gpointer object)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail(DIYA_IS_OBJECT(object), NULL);
|
|
|
|
DiyaObject * self = DIYA_OBJECT(object);
|
|
|
|
DiyaObjectClass *class = DIYA_OBJECT_GET_CLASS(self);
|
2024-04-17 01:05:53 +02:00
|
|
|
return class->to_string ? class->to_string(self) : "";
|
2024-04-14 16:29:02 +02:00
|
|
|
}
|