From: Matthias Clasen Date: Sat, 1 Dec 2007 06:12:45 +0000 (+0000) Subject: Some more property work X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=2e67aabed7385b0fb4e0f3480099578ffde777a3;p=dana%2Fcg-glib.git Some more property work svn path=/trunk/; revision=6008 --- diff --git a/gio/ChangeLog b/gio/ChangeLog index b8989936..aaf5d7d1 100644 --- a/gio/ChangeLog +++ b/gio/ChangeLog @@ -1,5 +1,8 @@ 2007-12-01 Matthias Clasen + * gdirectorymonitor.c: + * gfilemonitor.c: Add properties + * gbufferedoutputstream.c: Don't mark buffer-size property as construct-only. diff --git a/gio/gbufferedinputstream.c b/gio/gbufferedinputstream.c index 62c96f98..13c24646 100644 --- a/gio/gbufferedinputstream.c +++ b/gio/gbufferedinputstream.c @@ -40,14 +40,15 @@ * * By default, #GBufferedInputStream's buffer size is set at 4 kilobytes. * - * To create a buffered input stream, use g_buffered_input_stream_new(), or - * g_buffered_input_stream_new_sized() to specify the buffer's size at construction. + * To create a buffered input stream, use g_buffered_input_stream_new(), + * or g_buffered_input_stream_new_sized() to specify the buffer's size at + * construction. * * To get the size of a buffer within a buffered input stream, use * g_buffered_input_stream_get_buffer_size(). To change the size of a - * buffered input stream's buffer, use g_buffered_input_stream_set_buffer_size(). - * Note: the buffer's size cannot be reduced below the size of the data within the - * buffer. + * buffered input stream's buffer, use + * g_buffered_input_stream_set_buffer_size(). Note that the buffer's size + * cannot be reduced below the size of the data within the buffer. * **/ @@ -207,6 +208,9 @@ g_buffered_input_stream_set_buffer_size (GBufferedInputStream *stream, priv = stream->priv; + if (priv->len == size) + return; + if (priv->buffer) { in_buffer = priv->end - priv->pos; @@ -229,6 +233,8 @@ g_buffered_input_stream_set_buffer_size (GBufferedInputStream *stream, priv->end = 0; priv->buffer = g_malloc (size); } + + g_object_notify (G_OBJECT (stream), "buffer-size"); } static void diff --git a/gio/gbufferedoutputstream.c b/gio/gbufferedoutputstream.c index 020d7534..15ca514d 100644 --- a/gio/gbufferedoutputstream.c +++ b/gio/gbufferedoutputstream.c @@ -153,7 +153,7 @@ g_buffered_output_stream_class_init (GBufferedOutputStreamClass *klass) 1, G_MAXUINT, DEFAULT_BUFFER_SIZE, - G_PARAM_READWRITE| + G_PARAM_READWRITE|G_PARAM_CONSTRUCT| G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); g_object_class_install_property (object_class, diff --git a/gio/gdataoutputstream.c b/gio/gdataoutputstream.c index bfcf38ba..b7ab2caf 100644 --- a/gio/gdataoutputstream.c +++ b/gio/gdataoutputstream.c @@ -23,6 +23,7 @@ #include #include #include "gdataoutputstream.h" +#include "gioenumtypes.h" #include "glibintl.h" #include "gioalias.h" @@ -44,7 +45,8 @@ struct _GDataOutputStreamPrivate { }; enum { - PROP_0 + PROP_0, + PROP_BYTE_ORDER }; static void g_data_output_stream_set_property (GObject *object, @@ -71,6 +73,22 @@ g_data_output_stream_class_init (GDataOutputStreamClass *klass) object_class = G_OBJECT_CLASS (klass); object_class->get_property = g_data_output_stream_get_property; object_class->set_property = g_data_output_stream_set_property; + + /** + * GDataOutputStream:byte-order: + * + * Determines the byte ordering that is used when writing + * multi-byte entities (such as integers) to the stream. + */ + g_object_class_install_property (object_class, + PROP_BYTE_ORDER, + g_param_spec_enum ("byte-order", + P_("Byte order"), + P_("The byte order"), + G_TYPE_DATA_STREAM_BYTE_ORDER, + G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN, + G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_BLURB)); + } static void @@ -79,14 +97,16 @@ g_data_output_stream_set_property (GObject *object, const GValue *value, GParamSpec *pspec) { - GDataOutputStreamPrivate *priv; - GDataOutputStream *dstream; + GDataOutputStream *dstream; dstream = G_DATA_OUTPUT_STREAM (object); - priv = dstream->priv; switch (prop_id) { + case PROP_BYTE_ORDER: + g_data_output_stream_set_byte_order (dstream, g_value_get_enum (value)); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -106,7 +126,11 @@ g_data_output_stream_get_property (GObject *object, priv = dstream->priv; switch (prop_id) - { + { + case PROP_BYTE_ORDER: + g_value_set_enum (value, priv->byte_order); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -156,9 +180,14 @@ void g_data_output_stream_set_byte_order (GDataOutputStream *stream, GDataStreamByteOrder order) { + GDataOutputStreamPrivate *priv; g_return_if_fail (G_IS_DATA_OUTPUT_STREAM (stream)); - - stream->priv->byte_order = order; + priv = stream->priv; + if (priv->byte_order != order) + { + priv->byte_order = order; + g_object_notify (G_OBJECT (stream), "byte-order"); + } } /** diff --git a/gio/gdirectorymonitor.c b/gio/gdirectorymonitor.c index 6c4d2904..00c5bdf1 100644 --- a/gio/gdirectorymonitor.c +++ b/gio/gdirectorymonitor.c @@ -64,6 +64,12 @@ struct _GDirectoryMonitorPrivate { guint32 timeout_fires_at; }; +enum { + PROP_0, + PROP_RATE_LIMIT, + PROP_CANCELLED +}; + #define DEFAULT_RATE_LIMIT_MSECS 800 #define DEFAULT_VIRTUAL_CHANGES_DONE_DELAY_SECS 2 @@ -76,6 +82,56 @@ rate_limiter_free (RateLimiter *limiter) g_free (limiter); } +static void +g_directory_monitor_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GDirectoryMonitor *monitor; + + monitor = G_DIRECTORY_MONITOR (object); + + switch (prop_id) + { + case PROP_RATE_LIMIT: + g_directory_monitor_set_rate_limit (monitor, g_value_get_int (value)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +g_directory_monitor_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GDirectoryMonitor *monitor; + GDirectoryMonitorPrivate *priv; + + monitor = G_DIRECTORY_MONITOR (object); + priv = monitor->priv; + + switch (prop_id) + { + case PROP_RATE_LIMIT: + g_value_set_int (value, priv->rate_limit_msec); + break; + + case PROP_CANCELLED: + g_value_set_boolean (value, priv->cancelled); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + static void g_directory_monitor_finalize (GObject *object) { @@ -113,12 +169,15 @@ g_directory_monitor_dispose (GObject *object) static void g_directory_monitor_class_init (GDirectoryMonitorClass *klass) { - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GObjectClass *object_class; g_type_class_add_private (klass, sizeof (GDirectoryMonitorPrivate)); - gobject_class->finalize = g_directory_monitor_finalize; - gobject_class->dispose = g_directory_monitor_dispose; + object_class = G_OBJECT_CLASS (klass); + object_class->finalize = g_directory_monitor_finalize; + object_class->dispose = g_directory_monitor_dispose; + object_class->get_property = g_directory_monitor_get_property; + object_class->set_property = g_directory_monitor_set_property; /** * GDirectoryMonitor::changed: @@ -136,10 +195,28 @@ g_directory_monitor_class_init (GDirectoryMonitorClass *klass) G_STRUCT_OFFSET (GDirectoryMonitorClass, changed), NULL, NULL, _gio_marshal_VOID__OBJECT_OBJECT_INT, - G_TYPE_NONE,3, - G_TYPE_FILE, - G_TYPE_FILE, - G_TYPE_INT); + G_TYPE_NONE, 3, + G_TYPE_FILE, G_TYPE_FILE, G_TYPE_INT); + + g_object_class_install_property (object_class, + PROP_RATE_LIMIT, + g_param_spec_int ("rate-limit", + P_("Rate limit"), + P_("The limit of the monitor to watch for changes, in milliseconds"), + 0, G_MAXINT, + DEFAULT_RATE_LIMIT_MSECS, + G_PARAM_READWRITE| + G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); + + g_object_class_install_property (object_class, + PROP_CANCELLED, + g_param_spec_boolean ("cancelled", + P_("Cancelled"), + P_("Whether the monitor has been cancelled"), + FALSE, + G_PARAM_READABLE| + G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); + } static void @@ -174,6 +251,7 @@ g_directory_monitor_cancel (GDirectoryMonitor *monitor) return TRUE; monitor->priv->cancelled = TRUE; + g_object_notify (G_OBJECT (monitor), "cancelled"); class = G_DIRECTORY_MONITOR_GET_CLASS (monitor); return (* class->cancel) (monitor); @@ -192,9 +270,14 @@ void g_directory_monitor_set_rate_limit (GDirectoryMonitor *monitor, int limit_msecs) { + GDirectoryMonitorPrivate *priv; g_return_if_fail (G_IS_DIRECTORY_MONITOR (monitor)); - - monitor->priv->rate_limit_msec = limit_msecs; + priv = monitor->priv; + if (priv->rate_limit_msec != limit_msecs) + { + monitor->priv->rate_limit_msec = limit_msecs; + g_object_notify (G_OBJECT (monitor), "rate-limit"); + } } /** diff --git a/gio/gfilemonitor.c b/gio/gfilemonitor.c index 1e1b5a21..730aa664 100644 --- a/gio/gfilemonitor.c +++ b/gio/gfilemonitor.c @@ -51,7 +51,7 @@ struct _GFileMonitorPrivate { int rate_limit_msec; /* Rate limiting change events */ - guint32 last_sent_change_time; /* Some monitonic clock in msecs */ + guint32 last_sent_change_time; /* Some monotonic clock in msecs */ GFile *last_sent_change_file; guint send_delayed_change_timeout; @@ -61,11 +61,68 @@ struct _GFileMonitorPrivate { GFile *virtual_changes_done_file; }; +enum { + PROP_0, + PROP_RATE_LIMIT, + PROP_CANCELLED +}; + +static void +g_file_monitor_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GFileMonitor *monitor; + + monitor = G_FILE_MONITOR (object); + + switch (prop_id) + { + case PROP_RATE_LIMIT: + g_file_monitor_set_rate_limit (monitor, g_value_get_int (value)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +g_file_monitor_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GFileMonitor *monitor; + GFileMonitorPrivate *priv; + + monitor = G_FILE_MONITOR (object); + priv = monitor->priv; + + switch (prop_id) + { + case PROP_RATE_LIMIT: + g_value_set_int (value, priv->rate_limit_msec); + break; + + case PROP_CANCELLED: + g_value_set_boolean (value, priv->cancelled); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + #define DEFAULT_RATE_LIMIT_MSECS 800 #define DEFAULT_VIRTUAL_CHANGES_DONE_DELAY_SECS 2 static guint signals[LAST_SIGNAL] = { 0 }; + static void g_file_monitor_finalize (GObject *object) { @@ -107,12 +164,15 @@ g_file_monitor_dispose (GObject *object) static void g_file_monitor_class_init (GFileMonitorClass *klass) { - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GObjectClass *object_class; g_type_class_add_private (klass, sizeof (GFileMonitorPrivate)); - gobject_class->finalize = g_file_monitor_finalize; - gobject_class->dispose = g_file_monitor_dispose; + object_class = G_OBJECT_CLASS (klass); + object_class->finalize = g_file_monitor_finalize; + object_class->dispose = g_file_monitor_dispose; + object_class->get_property = g_file_monitor_get_property; + object_class->set_property = g_file_monitor_set_property; /** * GFileMonitor::changed: @@ -130,10 +190,27 @@ g_file_monitor_class_init (GFileMonitorClass *klass) G_STRUCT_OFFSET (GFileMonitorClass, changed), NULL, NULL, _gio_marshal_VOID__OBJECT_OBJECT_INT, - G_TYPE_NONE,3, - G_TYPE_FILE, - G_TYPE_FILE, - G_TYPE_INT); + G_TYPE_NONE, 3, + G_TYPE_FILE, G_TYPE_FILE, G_TYPE_INT); + + g_object_class_install_property (object_class, + PROP_RATE_LIMIT, + g_param_spec_int ("rate-limit", + P_("Rate limit"), + P_("The limit of the monitor to watch for changes, in milliseconds"), + 0, G_MAXINT, + DEFAULT_RATE_LIMIT_MSECS, + G_PARAM_READWRITE| + G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); + + g_object_class_install_property (object_class, + PROP_CANCELLED, + g_param_spec_boolean ("cancelled", + P_("Cancelled"), + P_("Whether the monitor has been cancelled"), + FALSE, + G_PARAM_READABLE| + G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); } static void @@ -180,7 +257,8 @@ g_file_monitor_cancel (GFileMonitor* monitor) return TRUE; monitor->priv->cancelled = TRUE; - + g_object_notify (G_OBJECT (monitor), "cancelled"); + klass = G_FILE_MONITOR_GET_CLASS (monitor); return (* klass->cancel) (monitor); } @@ -199,9 +277,14 @@ void g_file_monitor_set_rate_limit (GFileMonitor *monitor, int limit_msecs) { + GFileMonitorPrivate *priv; g_return_if_fail (G_IS_FILE_MONITOR (monitor)); - - monitor->priv->rate_limit_msec = limit_msecs; + priv = monitor->priv; + if (priv->rate_limit_msec != limit_msecs) + { + monitor->priv->rate_limit_msec = limit_msecs; + g_object_notify (G_OBJECT (monitor), "rate-limit"); + } } static guint32 diff --git a/gio/gmountoperation.c b/gio/gmountoperation.c index e99ab473..6679c2ec 100644 --- a/gio/gmountoperation.c +++ b/gio/gmountoperation.c @@ -305,7 +305,8 @@ g_mount_operation_class_init (GMountOperationClass *klass) P_("Username"), P_("The user name"), NULL, - G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_BLURB)); + G_PARAM_READWRITE| + G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); /** * GMountOperation:password: @@ -319,7 +320,8 @@ g_mount_operation_class_init (GMountOperationClass *klass) P_("Password"), P_("The password"), NULL, - G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_BLURB)); + G_PARAM_READWRITE| + G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); /** * GMountOperation:anonymous: @@ -332,7 +334,8 @@ g_mount_operation_class_init (GMountOperationClass *klass) P_("Anonymous"), P_("Whether to use an anonymous user"), FALSE, - G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_BLURB)); + G_PARAM_READWRITE| + G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); /** * GMountOperation:domain: @@ -345,7 +348,8 @@ g_mount_operation_class_init (GMountOperationClass *klass) P_("Domain"), P_("The domain of the mount operation"), NULL, - G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_BLURB)); + G_PARAM_READWRITE| + G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); /** * GMountOperation:password-save: @@ -359,7 +363,8 @@ g_mount_operation_class_init (GMountOperationClass *klass) P_("How passwords should be saved"), G_TYPE_PASSWORD_SAVE, G_PASSWORD_SAVE_NEVER, - G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_BLURB)); + G_PARAM_READWRITE| + G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); /** * GMountOperation:choice: @@ -373,7 +378,8 @@ g_mount_operation_class_init (GMountOperationClass *klass) P_("Choice"), P_("The users choice"), 0, G_MAXINT, 0, - G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_BLURB)); + G_PARAM_READWRITE| + G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); } static void