Some more property work

svn path=/trunk/; revision=6008
This commit is contained in:
Matthias Clasen 2007-12-01 06:12:45 +00:00
parent e919f0198b
commit 2e67aabed7
7 changed files with 249 additions and 39 deletions

View File

@ -1,5 +1,8 @@
2007-12-01 Matthias Clasen <mclasen@redhat.com> 2007-12-01 Matthias Clasen <mclasen@redhat.com>
* gdirectorymonitor.c:
* gfilemonitor.c: Add properties
* gbufferedoutputstream.c: Don't mark buffer-size property * gbufferedoutputstream.c: Don't mark buffer-size property
as construct-only. as construct-only.

View File

@ -40,14 +40,15 @@
* *
* By default, #GBufferedInputStream's buffer size is set at 4 kilobytes. * By default, #GBufferedInputStream's buffer size is set at 4 kilobytes.
* *
* To create a buffered input stream, use g_buffered_input_stream_new(), or * To create a buffered input stream, use g_buffered_input_stream_new(),
* g_buffered_input_stream_new_sized() to specify the buffer's size at construction. * 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 * 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 * 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(). * buffered input stream's buffer, use
* Note: the buffer's size cannot be reduced below the size of the data within the * g_buffered_input_stream_set_buffer_size(). Note that the buffer's size
* buffer. * 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; priv = stream->priv;
if (priv->len == size)
return;
if (priv->buffer) if (priv->buffer)
{ {
in_buffer = priv->end - priv->pos; in_buffer = priv->end - priv->pos;
@ -229,6 +233,8 @@ g_buffered_input_stream_set_buffer_size (GBufferedInputStream *stream,
priv->end = 0; priv->end = 0;
priv->buffer = g_malloc (size); priv->buffer = g_malloc (size);
} }
g_object_notify (G_OBJECT (stream), "buffer-size");
} }
static void static void

View File

@ -153,7 +153,7 @@ g_buffered_output_stream_class_init (GBufferedOutputStreamClass *klass)
1, 1,
G_MAXUINT, G_MAXUINT,
DEFAULT_BUFFER_SIZE, 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_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB));
g_object_class_install_property (object_class, g_object_class_install_property (object_class,

View File

@ -23,6 +23,7 @@
#include <config.h> #include <config.h>
#include <string.h> #include <string.h>
#include "gdataoutputstream.h" #include "gdataoutputstream.h"
#include "gioenumtypes.h"
#include "glibintl.h" #include "glibintl.h"
#include "gioalias.h" #include "gioalias.h"
@ -44,7 +45,8 @@ struct _GDataOutputStreamPrivate {
}; };
enum { enum {
PROP_0 PROP_0,
PROP_BYTE_ORDER
}; };
static void g_data_output_stream_set_property (GObject *object, 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 = G_OBJECT_CLASS (klass);
object_class->get_property = g_data_output_stream_get_property; object_class->get_property = g_data_output_stream_get_property;
object_class->set_property = g_data_output_stream_set_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 static void
@ -79,14 +97,16 @@ g_data_output_stream_set_property (GObject *object,
const GValue *value, const GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
GDataOutputStreamPrivate *priv;
GDataOutputStream *dstream; GDataOutputStream *dstream;
dstream = G_DATA_OUTPUT_STREAM (object); dstream = G_DATA_OUTPUT_STREAM (object);
priv = dstream->priv;
switch (prop_id) switch (prop_id)
{ {
case PROP_BYTE_ORDER:
g_data_output_stream_set_byte_order (dstream, g_value_get_enum (value));
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
@ -107,6 +127,10 @@ g_data_output_stream_get_property (GObject *object,
switch (prop_id) switch (prop_id)
{ {
case PROP_BYTE_ORDER:
g_value_set_enum (value, priv->byte_order);
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
@ -156,9 +180,14 @@ void
g_data_output_stream_set_byte_order (GDataOutputStream *stream, g_data_output_stream_set_byte_order (GDataOutputStream *stream,
GDataStreamByteOrder order) GDataStreamByteOrder order)
{ {
GDataOutputStreamPrivate *priv;
g_return_if_fail (G_IS_DATA_OUTPUT_STREAM (stream)); g_return_if_fail (G_IS_DATA_OUTPUT_STREAM (stream));
priv = stream->priv;
stream->priv->byte_order = order; if (priv->byte_order != order)
{
priv->byte_order = order;
g_object_notify (G_OBJECT (stream), "byte-order");
}
} }
/** /**

View File

@ -64,6 +64,12 @@ struct _GDirectoryMonitorPrivate {
guint32 timeout_fires_at; guint32 timeout_fires_at;
}; };
enum {
PROP_0,
PROP_RATE_LIMIT,
PROP_CANCELLED
};
#define DEFAULT_RATE_LIMIT_MSECS 800 #define DEFAULT_RATE_LIMIT_MSECS 800
#define DEFAULT_VIRTUAL_CHANGES_DONE_DELAY_SECS 2 #define DEFAULT_VIRTUAL_CHANGES_DONE_DELAY_SECS 2
@ -76,6 +82,56 @@ rate_limiter_free (RateLimiter *limiter)
g_free (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 static void
g_directory_monitor_finalize (GObject *object) g_directory_monitor_finalize (GObject *object)
{ {
@ -113,12 +169,15 @@ g_directory_monitor_dispose (GObject *object)
static void static void
g_directory_monitor_class_init (GDirectoryMonitorClass *klass) 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)); g_type_class_add_private (klass, sizeof (GDirectoryMonitorPrivate));
gobject_class->finalize = g_directory_monitor_finalize; object_class = G_OBJECT_CLASS (klass);
gobject_class->dispose = g_directory_monitor_dispose; 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: * GDirectoryMonitor::changed:
@ -136,10 +195,28 @@ g_directory_monitor_class_init (GDirectoryMonitorClass *klass)
G_STRUCT_OFFSET (GDirectoryMonitorClass, changed), G_STRUCT_OFFSET (GDirectoryMonitorClass, changed),
NULL, NULL, NULL, NULL,
_gio_marshal_VOID__OBJECT_OBJECT_INT, _gio_marshal_VOID__OBJECT_OBJECT_INT,
G_TYPE_NONE,3, G_TYPE_NONE, 3,
G_TYPE_FILE, G_TYPE_FILE, G_TYPE_FILE, G_TYPE_INT);
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 static void
@ -174,6 +251,7 @@ g_directory_monitor_cancel (GDirectoryMonitor *monitor)
return TRUE; return TRUE;
monitor->priv->cancelled = TRUE; monitor->priv->cancelled = TRUE;
g_object_notify (G_OBJECT (monitor), "cancelled");
class = G_DIRECTORY_MONITOR_GET_CLASS (monitor); class = G_DIRECTORY_MONITOR_GET_CLASS (monitor);
return (* class->cancel) (monitor); return (* class->cancel) (monitor);
@ -192,9 +270,14 @@ void
g_directory_monitor_set_rate_limit (GDirectoryMonitor *monitor, g_directory_monitor_set_rate_limit (GDirectoryMonitor *monitor,
int limit_msecs) int limit_msecs)
{ {
GDirectoryMonitorPrivate *priv;
g_return_if_fail (G_IS_DIRECTORY_MONITOR (monitor)); g_return_if_fail (G_IS_DIRECTORY_MONITOR (monitor));
priv = monitor->priv;
if (priv->rate_limit_msec != limit_msecs)
{
monitor->priv->rate_limit_msec = limit_msecs; monitor->priv->rate_limit_msec = limit_msecs;
g_object_notify (G_OBJECT (monitor), "rate-limit");
}
} }
/** /**

View File

@ -51,7 +51,7 @@ struct _GFileMonitorPrivate {
int rate_limit_msec; int rate_limit_msec;
/* Rate limiting change events */ /* 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; GFile *last_sent_change_file;
guint send_delayed_change_timeout; guint send_delayed_change_timeout;
@ -61,11 +61,68 @@ struct _GFileMonitorPrivate {
GFile *virtual_changes_done_file; 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_RATE_LIMIT_MSECS 800
#define DEFAULT_VIRTUAL_CHANGES_DONE_DELAY_SECS 2 #define DEFAULT_VIRTUAL_CHANGES_DONE_DELAY_SECS 2
static guint signals[LAST_SIGNAL] = { 0 }; static guint signals[LAST_SIGNAL] = { 0 };
static void static void
g_file_monitor_finalize (GObject *object) g_file_monitor_finalize (GObject *object)
{ {
@ -107,12 +164,15 @@ g_file_monitor_dispose (GObject *object)
static void static void
g_file_monitor_class_init (GFileMonitorClass *klass) 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)); g_type_class_add_private (klass, sizeof (GFileMonitorPrivate));
gobject_class->finalize = g_file_monitor_finalize; object_class = G_OBJECT_CLASS (klass);
gobject_class->dispose = g_file_monitor_dispose; 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: * GFileMonitor::changed:
@ -130,10 +190,27 @@ g_file_monitor_class_init (GFileMonitorClass *klass)
G_STRUCT_OFFSET (GFileMonitorClass, changed), G_STRUCT_OFFSET (GFileMonitorClass, changed),
NULL, NULL, NULL, NULL,
_gio_marshal_VOID__OBJECT_OBJECT_INT, _gio_marshal_VOID__OBJECT_OBJECT_INT,
G_TYPE_NONE,3, G_TYPE_NONE, 3,
G_TYPE_FILE, G_TYPE_FILE, G_TYPE_FILE, G_TYPE_INT);
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 static void
@ -180,6 +257,7 @@ g_file_monitor_cancel (GFileMonitor* monitor)
return TRUE; return TRUE;
monitor->priv->cancelled = TRUE; monitor->priv->cancelled = TRUE;
g_object_notify (G_OBJECT (monitor), "cancelled");
klass = G_FILE_MONITOR_GET_CLASS (monitor); klass = G_FILE_MONITOR_GET_CLASS (monitor);
return (* klass->cancel) (monitor); return (* klass->cancel) (monitor);
@ -199,9 +277,14 @@ void
g_file_monitor_set_rate_limit (GFileMonitor *monitor, g_file_monitor_set_rate_limit (GFileMonitor *monitor,
int limit_msecs) int limit_msecs)
{ {
GFileMonitorPrivate *priv;
g_return_if_fail (G_IS_FILE_MONITOR (monitor)); g_return_if_fail (G_IS_FILE_MONITOR (monitor));
priv = monitor->priv;
if (priv->rate_limit_msec != limit_msecs)
{
monitor->priv->rate_limit_msec = limit_msecs; monitor->priv->rate_limit_msec = limit_msecs;
g_object_notify (G_OBJECT (monitor), "rate-limit");
}
} }
static guint32 static guint32

View File

@ -305,7 +305,8 @@ g_mount_operation_class_init (GMountOperationClass *klass)
P_("Username"), P_("Username"),
P_("The user name"), P_("The user name"),
NULL, 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: * GMountOperation:password:
@ -319,7 +320,8 @@ g_mount_operation_class_init (GMountOperationClass *klass)
P_("Password"), P_("Password"),
P_("The password"), P_("The password"),
NULL, 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: * GMountOperation:anonymous:
@ -332,7 +334,8 @@ g_mount_operation_class_init (GMountOperationClass *klass)
P_("Anonymous"), P_("Anonymous"),
P_("Whether to use an anonymous user"), P_("Whether to use an anonymous user"),
FALSE, 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: * GMountOperation:domain:
@ -345,7 +348,8 @@ g_mount_operation_class_init (GMountOperationClass *klass)
P_("Domain"), P_("Domain"),
P_("The domain of the mount operation"), P_("The domain of the mount operation"),
NULL, 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: * GMountOperation:password-save:
@ -359,7 +363,8 @@ g_mount_operation_class_init (GMountOperationClass *klass)
P_("How passwords should be saved"), P_("How passwords should be saved"),
G_TYPE_PASSWORD_SAVE, G_TYPE_PASSWORD_SAVE,
G_PASSWORD_SAVE_NEVER, 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: * GMountOperation:choice:
@ -373,7 +378,8 @@ g_mount_operation_class_init (GMountOperationClass *klass)
P_("Choice"), P_("Choice"),
P_("The users choice"), P_("The users choice"),
0, G_MAXINT, 0, 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 static void