2007-12-01 Matthias Clasen <mclasen@redhat.com>
+ * gdirectorymonitor.c:
+ * gfilemonitor.c: Add properties
+
* gbufferedoutputstream.c: Don't mark buffer-size property
as construct-only.
*
* 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.
*
**/
priv = stream->priv;
+ if (priv->len == size)
+ return;
+
if (priv->buffer)
{
in_buffer = priv->end - priv->pos;
priv->end = 0;
priv->buffer = g_malloc (size);
}
+
+ g_object_notify (G_OBJECT (stream), "buffer-size");
}
static void
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,
#include <config.h>
#include <string.h>
#include "gdataoutputstream.h"
+#include "gioenumtypes.h"
#include "glibintl.h"
#include "gioalias.h"
};
enum {
- PROP_0
+ PROP_0,
+ PROP_BYTE_ORDER
};
static void g_data_output_stream_set_property (GObject *object,
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
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;
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;
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");
+ }
}
/**
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
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)
{
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:
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
return TRUE;
monitor->priv->cancelled = TRUE;
+ g_object_notify (G_OBJECT (monitor), "cancelled");
class = G_DIRECTORY_MONITOR_GET_CLASS (monitor);
return (* class->cancel) (monitor);
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");
+ }
}
/**
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;
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)
{
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:
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
return TRUE;
monitor->priv->cancelled = TRUE;
-
+ g_object_notify (G_OBJECT (monitor), "cancelled");
+
klass = G_FILE_MONITOR_GET_CLASS (monitor);
return (* klass->cancel) (monitor);
}
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
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:
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:
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:
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:
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:
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