[monkey-bubble: 299/753] Removed these properties (do_construct_handler): Use the client's property
- From: Sven Herzberg <herzi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [monkey-bubble: 299/753] Removed these properties (do_construct_handler): Use the client's property
- Date: Wed, 14 Jul 2010 22:20:47 +0000 (UTC)
commit 819861d81de712c1a99d610358d42098100fd60c
Author: Martin Baulig <baulig suse de>
Date: Sun May 20 18:41:03 2001 +0000
Removed these properties (do_construct_handler): Use the client's property
2001-05-20 Martin Baulig <baulig suse de>
* gnome-selector-component.c
(PROP_USE_DEFAULT_ENTRY_WIDGET, PROP_USE_DEFAULT_SELECTOR_WIDGET,
PROP_WANT_BROWSE_BUTTON, PROP_WANT_CLEAR_BUTTON, PROP_WANT_DEFAULT_BUTTON):
Removed these properties
(do_construct_handler): Use the client's property bag.
* gnome-selector-client.c
(PROP_WANT_ENTRY_WIDGET, PROP_WANT_SELECTOR_WIDGET, PROP_WANT_BROWSE_BUTTON,
PROP_WANT_CLEAR_BUTTON, PROP_WANT_DEFAULT_BUTTON, PROP_BROWSE_DIALOG_MONIKER):
New properties.
(gnome_selector_client_construct): Create a new property bag and proxy our
GObject's properties.
libgnomeui/ChangeLog | 3 +
libgnomeui/gnome-component-widget.c | 174 +++++++++++++++++++++++++++++++++--
libgnomeui/gnome-image-entry.c | 164 ++++++++++++++++++++++++++-------
libgnomeui/gnome-image-entry.h | 4 -
libgnomeui/gnome-image-selector.c | 36 +++----
5 files changed, 313 insertions(+), 68 deletions(-)
---
diff --git a/libgnomeui/ChangeLog b/libgnomeui/ChangeLog
index d5ab2df..cc46331 100644
--- a/libgnomeui/ChangeLog
+++ b/libgnomeui/ChangeLog
@@ -13,6 +13,9 @@
(gnome_selector_client_construct): Create a new property bag and proxy our
GObject's properties.
+ * gnome-image-entry.c (gnome_image_entry_construct): Removed.
+ (PROP_IS_PIXMAP_ENTRY, PROP_PREVIEW_X, PROP_PREVIEW_Y): New properties.
+
2001-05-20 Martin Baulig <baulig suse de>
* gnome-selector-client.h
diff --git a/libgnomeui/gnome-component-widget.c b/libgnomeui/gnome-component-widget.c
index 49b9230..d89b5d7 100644
--- a/libgnomeui/gnome-component-widget.c
+++ b/libgnomeui/gnome-component-widget.c
@@ -33,7 +33,16 @@
struct _GnomeSelectorClientPrivate {
GNOME_Selector selector;
Bonobo_EventSource_ListenerId listener_id;
- gboolean constructed;
+
+ gchar *browse_dialog_moniker;
+
+ guint32 want_entry_widget : 1;
+ guint32 want_selector_widget : 1;
+ guint32 want_browse_button : 1;
+ guint32 want_clear_button : 1;
+ guint32 want_default_button : 1;
+
+ guint32 constructed : 1;
BonoboPropertyBag *pbag;
@@ -54,7 +63,15 @@ static BonoboWidgetClass *gnome_selector_client_parent_class;
static GNOME_Selector_AsyncID last_async_id = 0;
enum {
- PROP_0
+ PROP_0,
+
+ /* Construction properties */
+ PROP_WANT_ENTRY_WIDGET,
+ PROP_WANT_SELECTOR_WIDGET,
+ PROP_WANT_BROWSE_BUTTON,
+ PROP_WANT_CLEAR_BUTTON,
+ PROP_WANT_DEFAULT_BUTTON,
+ PROP_BROWSE_DIALOG_MONIKER
};
static void
@@ -69,6 +86,40 @@ gnome_selector_client_finalize (GObject *object)
}
static void
+gnome_selector_client_pbag_get_property (BonoboPropertyBag *bag, BonoboArg *arg,
+ guint arg_id, CORBA_Environment *ev,
+ gpointer user_data)
+{
+ GnomeSelectorClient *client;
+
+ g_return_if_fail (user_data != NULL);
+ g_return_if_fail (GNOME_IS_SELECTOR_CLIENT (user_data));
+
+ client = GNOME_SELECTOR_CLIENT (user_data);
+
+ switch (arg_id) {
+ case PROP_WANT_ENTRY_WIDGET:
+ BONOBO_ARG_SET_BOOLEAN (arg, client->_priv->want_entry_widget);
+ break;
+ case PROP_WANT_SELECTOR_WIDGET:
+ BONOBO_ARG_SET_BOOLEAN (arg, client->_priv->want_selector_widget);
+ break;
+ case PROP_WANT_BROWSE_BUTTON:
+ BONOBO_ARG_SET_BOOLEAN (arg, client->_priv->want_browse_button);
+ break;
+ case PROP_WANT_CLEAR_BUTTON:
+ BONOBO_ARG_SET_BOOLEAN (arg, client->_priv->want_clear_button);
+ break;
+ case PROP_WANT_DEFAULT_BUTTON:
+ BONOBO_ARG_SET_BOOLEAN (arg, client->_priv->want_default_button);
+ break;
+ case PROP_BROWSE_DIALOG_MONIKER:
+ BONOBO_ARG_SET_STRING (arg, client->_priv->browse_dialog_moniker);
+ break;
+ }
+}
+
+static void
gnome_selector_client_set_property (GObject *object, guint param_id,
const GValue *value, GParamSpec *pspec)
{
@@ -80,6 +131,30 @@ gnome_selector_client_set_property (GObject *object, guint param_id,
client = GNOME_SELECTOR_CLIENT (object);
switch (param_id) {
+ case PROP_WANT_ENTRY_WIDGET:
+ g_assert (!client->_priv->constructed);
+ client->_priv->want_entry_widget = g_value_get_boolean (value);
+ break;
+ case PROP_WANT_SELECTOR_WIDGET:
+ g_assert (!client->_priv->constructed);
+ client->_priv->want_selector_widget = g_value_get_boolean (value);
+ break;
+ case PROP_WANT_BROWSE_BUTTON:
+ g_assert (!client->_priv->constructed);
+ client->_priv->want_browse_button = g_value_get_boolean (value);
+ break;
+ case PROP_WANT_CLEAR_BUTTON:
+ g_assert (!client->_priv->constructed);
+ client->_priv->want_clear_button = g_value_get_boolean (value);
+ break;
+ case PROP_WANT_DEFAULT_BUTTON:
+ g_assert (!client->_priv->constructed);
+ client->_priv->want_default_button = g_value_get_boolean (value);
+ break;
+ case PROP_BROWSE_DIALOG_MONIKER:
+ g_assert (!client->_priv->constructed);
+ client->_priv->browse_dialog_moniker = g_value_dup_string (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
break;
@@ -95,9 +170,27 @@ gnome_selector_client_get_property (GObject *object, guint param_id, GValue *val
g_return_if_fail (object != NULL);
g_return_if_fail (GNOME_IS_SELECTOR_CLIENT (object));
- client = GNOME_SELECTOR_CLIENT (client);
+ client = GNOME_SELECTOR_CLIENT (object);
switch (param_id) {
+ case PROP_WANT_ENTRY_WIDGET:
+ g_value_set_boolean (value, client->_priv->want_entry_widget);
+ break;
+ case PROP_WANT_SELECTOR_WIDGET:
+ g_value_set_boolean (value, client->_priv->want_selector_widget);
+ break;
+ case PROP_WANT_BROWSE_BUTTON:
+ g_value_set_boolean (value, client->_priv->want_browse_button);
+ break;
+ case PROP_WANT_CLEAR_BUTTON:
+ g_value_set_boolean (value, client->_priv->want_clear_button);
+ break;
+ case PROP_WANT_DEFAULT_BUTTON:
+ g_value_set_boolean (value, client->_priv->want_default_button);
+ break;
+ case PROP_BROWSE_DIALOG_MONIKER:
+ g_value_set_string (value, client->_priv->browse_dialog_moniker);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
break;
@@ -112,9 +205,52 @@ gnome_selector_client_class_init (GnomeSelectorClientClass *klass)
gnome_selector_client_parent_class = g_type_class_peek_parent (klass);
object_class->finalize = gnome_selector_client_finalize;
-
- object_class->get_property = gnome_selector_client_get_property;
object_class->set_property = gnome_selector_client_set_property;
+ object_class->get_property = gnome_selector_client_get_property;
+
+ /* Construction properties */
+ g_object_class_install_property
+ (object_class,
+ PROP_WANT_ENTRY_WIDGET,
+ g_param_spec_boolean ("want-entry-widget", NULL, NULL,
+ FALSE,
+ (G_PARAM_READABLE | G_PARAM_WRITABLE |
+ G_PARAM_CONSTRUCT_ONLY)));
+ g_object_class_install_property
+ (object_class,
+ PROP_WANT_SELECTOR_WIDGET,
+ g_param_spec_boolean ("want-selector-widget", NULL, NULL,
+ FALSE,
+ (G_PARAM_READABLE | G_PARAM_WRITABLE |
+ G_PARAM_CONSTRUCT_ONLY)));
+ g_object_class_install_property
+ (object_class,
+ PROP_WANT_BROWSE_BUTTON,
+ g_param_spec_boolean ("want-browse-button", NULL, NULL,
+ FALSE,
+ (G_PARAM_READABLE | G_PARAM_WRITABLE |
+ G_PARAM_CONSTRUCT_ONLY)));
+ g_object_class_install_property
+ (object_class,
+ PROP_WANT_CLEAR_BUTTON,
+ g_param_spec_boolean ("want-clear-button", NULL, NULL,
+ FALSE,
+ (G_PARAM_READABLE | G_PARAM_WRITABLE |
+ G_PARAM_CONSTRUCT_ONLY)));
+ g_object_class_install_property
+ (object_class,
+ PROP_WANT_DEFAULT_BUTTON,
+ g_param_spec_boolean ("want-default-button", NULL, NULL,
+ FALSE,
+ (G_PARAM_READABLE | G_PARAM_WRITABLE |
+ G_PARAM_CONSTRUCT_ONLY)));
+ g_object_class_install_property
+ (object_class,
+ PROP_BROWSE_DIALOG_MONIKER,
+ g_param_spec_string ("browse-dialog-moniker", NULL, NULL,
+ NULL,
+ (G_PARAM_READABLE | G_PARAM_WRITABLE |
+ G_PARAM_CONSTRUCT_ONLY)));
}
static void
@@ -161,7 +297,30 @@ gnome_selector_client_construct (GnomeSelectorClient *client, const gchar *monik
CORBA_exception_init (&ev);
- client->_priv->pbag = bonobo_property_bag_new (NULL, NULL, client);
+ g_message (G_STRLOC);
+
+ client->_priv->pbag = bonobo_property_bag_new (gnome_selector_client_pbag_get_property,
+ NULL, client);
+
+ bonobo_property_bag_add (client->_priv->pbag,
+ "browse-dialog-moniker", PROP_BROWSE_DIALOG_MONIKER,
+ BONOBO_ARG_STRING, NULL, NULL, BONOBO_PROPERTY_READABLE);
+ bonobo_property_bag_add (client->_priv->pbag,
+ "want-entry-widget", PROP_WANT_ENTRY_WIDGET,
+ BONOBO_ARG_BOOLEAN, NULL, NULL, BONOBO_PROPERTY_READABLE);
+ bonobo_property_bag_add (client->_priv->pbag,
+ "want-selector-widget", PROP_WANT_SELECTOR_WIDGET,
+ BONOBO_ARG_BOOLEAN, NULL, NULL, BONOBO_PROPERTY_READABLE);
+ bonobo_property_bag_add (client->_priv->pbag,
+ "want-browse-button", PROP_WANT_BROWSE_BUTTON,
+ BONOBO_ARG_BOOLEAN, NULL, NULL, BONOBO_PROPERTY_READABLE);
+ bonobo_property_bag_add (client->_priv->pbag,
+ "want-default-button", PROP_WANT_DEFAULT_BUTTON,
+ BONOBO_ARG_BOOLEAN, NULL, NULL, BONOBO_PROPERTY_READABLE);
+ bonobo_property_bag_add (client->_priv->pbag,
+ "want-clear-button", PROP_WANT_CLEAR_BUTTON,
+ BONOBO_ARG_BOOLEAN, NULL, NULL, BONOBO_PROPERTY_READABLE);
+
bonobo_property_bag_add_gtk_args (client->_priv->pbag, G_OBJECT (client));
factory = bonobo_get_object (moniker, "GNOME/SelectorFactory", &ev);
@@ -202,9 +361,6 @@ gnome_selector_client_construct_from_objref (GnomeSelectorClient *client,
CORBA_exception_init (&ev);
- client->_priv->pbag = bonobo_property_bag_new (NULL, NULL, client);
- bonobo_property_bag_add_gtk_args (client->_priv->pbag, G_OBJECT (client));
-
client->_priv->selector = bonobo_object_dup_ref (corba_selector, &ev);
if (BONOBO_EX (&ev)) {
g_object_unref (G_OBJECT (client));
diff --git a/libgnomeui/gnome-image-entry.c b/libgnomeui/gnome-image-entry.c
index 70069c1..3d6b76a 100644
--- a/libgnomeui/gnome-image-entry.c
+++ b/libgnomeui/gnome-image-entry.c
@@ -43,9 +43,25 @@
#include <bonobo/bonobo-moniker-util.h>
#include "gnome-image-entry.h"
+#define ICON_SIZE 48
+
struct _GnomeImageEntryPrivate {
+ gboolean constructed;
+
+ gboolean is_pixmap_entry;
+ guint preview_x, preview_y;
+};
+
+enum {
+ PROP_0,
+
+ /* Construction properties */
+ PROP_IS_PIXMAP_ENTRY,
+
+ /* Normal properties */
+ PROP_PREVIEW_X,
+ PROP_PREVIEW_Y
};
-
static void gnome_image_entry_class_init (GnomeImageEntryClass *class);
static void gnome_image_entry_init (GnomeImageEntry *gentry);
@@ -77,17 +93,98 @@ gnome_image_entry_get_type (void)
}
static void
+gnome_image_entry_set_property (GObject *object, guint param_id,
+ const GValue *value, GParamSpec *pspec)
+{
+ GnomeImageEntry *ientry;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (GNOME_IS_IMAGE_ENTRY (object));
+
+ ientry = GNOME_IMAGE_ENTRY (object);
+
+ switch (param_id) {
+ case PROP_IS_PIXMAP_ENTRY:
+ g_assert (!ientry->_priv->constructed);
+ ientry->_priv->is_pixmap_entry = g_value_get_boolean (value);
+ break;
+ case PROP_PREVIEW_X:
+ ientry->_priv->preview_x = g_value_get_uint (value);
+ break;
+ case PROP_PREVIEW_Y:
+ ientry->_priv->preview_y = g_value_get_uint (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ }
+}
+
+static void
+gnome_image_entry_get_property (GObject *object, guint param_id, GValue *value,
+ GParamSpec *pspec)
+{
+ GnomeImageEntry *ientry;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (GNOME_IS_IMAGE_ENTRY (object));
+
+ ientry = GNOME_IMAGE_ENTRY (object);
+
+ switch (param_id) {
+ case PROP_IS_PIXMAP_ENTRY:
+ g_value_set_boolean (value, ientry->_priv->is_pixmap_entry);
+ break;
+ case PROP_PREVIEW_X:
+ g_value_set_uint (value, ientry->_priv->preview_x);
+ break;
+ case PROP_PREVIEW_Y:
+ g_value_set_uint (value, ientry->_priv->preview_y);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ }
+}
+
+static void
gnome_image_entry_class_init (GnomeImageEntryClass *class)
{
- GtkObjectClass *object_class;
- GObjectClass *gobject_class;
+ GObjectClass *object_class;
- object_class = (GtkObjectClass *) class;
- gobject_class = (GObjectClass *) class;
+ object_class = (GObjectClass *) class;
parent_class = gtk_type_class (gnome_selector_client_get_type ());
- gobject_class->finalize = gnome_image_entry_finalize;
+ object_class->finalize = gnome_image_entry_finalize;
+
+ object_class->get_property = gnome_image_entry_get_property;
+ object_class->set_property = gnome_image_entry_set_property;
+
+ /* Construction properties */
+ g_object_class_install_property
+ (object_class,
+ PROP_IS_PIXMAP_ENTRY,
+ g_param_spec_boolean ("is-pixmap-entry", NULL, NULL,
+ FALSE,
+ (G_PARAM_READABLE | G_PARAM_WRITABLE |
+ G_PARAM_CONSTRUCT_ONLY)));
+
+ /* Normal properties */
+ g_object_class_install_property
+ (object_class,
+ PROP_PREVIEW_X,
+ g_param_spec_uint ("preview-x", NULL, NULL,
+ 0, G_MAXINT, ICON_SIZE,
+ (G_PARAM_READABLE | G_PARAM_WRITABLE |
+ G_PARAM_CONSTRUCT)));
+ g_object_class_install_property
+ (object_class,
+ PROP_PREVIEW_Y,
+ g_param_spec_uint ("preview-y", NULL, NULL,
+ 0, G_MAXINT, ICON_SIZE,
+ (G_PARAM_READABLE | G_PARAM_WRITABLE |
+ G_PARAM_CONSTRUCT)));
}
static void
@@ -97,44 +194,42 @@ gnome_image_entry_init (GnomeImageEntry *gentry)
}
GtkWidget *
-gnome_image_entry_construct (GnomeImageEntry *ientry,
- GNOME_Selector corba_selector,
- Bonobo_UIContainer uic)
-{
- g_return_val_if_fail (ientry != NULL, NULL);
- g_return_val_if_fail (GNOME_IS_IMAGE_ENTRY (ientry), NULL);
- g_return_val_if_fail (corba_selector != CORBA_OBJECT_NIL, NULL);
-
- return (GtkWidget *) gnome_selector_client_construct
- (GNOME_SELECTOR_CLIENT (ientry), corba_selector, uic);
-}
-
-GtkWidget *
gnome_image_entry_new_icon_entry (void)
{
- GNOME_Selector selector;
- CORBA_Environment ev;
+ GnomeImageEntry *ientry;
- CORBA_exception_init (&ev);
- selector = bonobo_get_object ("OAFIID:GNOME_UI_Component_ImageEntry!type=icon",
- "GNOME/Selector", &ev);
- CORBA_exception_free (&ev);
+ ientry = g_object_new (gnome_image_entry_get_type (),
+ "want-entry-widget", FALSE,
+ "want-selector-widget", TRUE,
+ "want-browse-button", FALSE,
+ "want-clear-button", FALSE,
+ "want-default-button", FALSE,
+ "is-pixmap-entry", FALSE, NULL);
- return gnome_image_entry_new_from_selector (selector, CORBA_OBJECT_NIL);
+ return (GtkWidget *) gnome_selector_client_construct
+ (GNOME_SELECTOR_CLIENT (ientry),
+ "OAFIID:GNOME_UI_Component_ImageEntry",
+ CORBA_OBJECT_NIL);
}
GtkWidget *
gnome_image_entry_new_pixmap_entry (guint preview_x, guint preview_y)
{
- GNOME_Selector selector;
- CORBA_Environment ev;
+ GnomeImageEntry *ientry;
- CORBA_exception_init (&ev);
- selector = bonobo_get_object ("OAFIID:GNOME_UI_Component_ImageEntry!type=pixmap",
- "GNOME/Selector", &ev);
- CORBA_exception_free (&ev);
+ ientry = g_object_new (gnome_image_entry_get_type (),
+ "want-entry-widget", TRUE,
+ "want-selector-widget", TRUE,
+ "want-browse-button", TRUE,
+ "want-clear-button", FALSE,
+ "want-default-button", FALSE,
+ "preview-x", preview_x, "preview-y", preview_y,
+ "is-pixmap-entry", TRUE, NULL);
- return gnome_image_entry_new_from_selector (selector, CORBA_OBJECT_NIL);
+ return (GtkWidget *) gnome_selector_client_construct
+ (GNOME_SELECTOR_CLIENT (ientry),
+ "OAFIID:GNOME_UI_Component_ImageEntry",
+ CORBA_OBJECT_NIL);
}
GtkWidget *
@@ -147,7 +242,8 @@ gnome_image_entry_new_from_selector (GNOME_Selector corba_selector,
ientry = g_object_new (gnome_image_entry_get_type (), NULL);
- return gnome_image_entry_construct (ientry, corba_selector, uic);
+ return (GtkWidget *) gnome_selector_client_construct_from_objref
+ (GNOME_SELECTOR_CLIENT (ientry), corba_selector, uic);
}
static void
diff --git a/libgnomeui/gnome-image-entry.h b/libgnomeui/gnome-image-entry.h
index 97cf709..2d61ee4 100644
--- a/libgnomeui/gnome-image-entry.h
+++ b/libgnomeui/gnome-image-entry.h
@@ -73,10 +73,6 @@ GtkWidget *gnome_image_entry_new_pixmap_entry (guint preview_x
GtkWidget *gnome_image_entry_new_from_selector (GNOME_Selector corba_selector,
Bonobo_UIContainer uic);
-GtkWidget *gnome_image_entry_construct (GnomeImageEntry *ientry,
- GNOME_Selector corba_selector,
- Bonobo_UIContainer uic);
-
G_END_DECLS
#endif
diff --git a/libgnomeui/gnome-image-selector.c b/libgnomeui/gnome-image-selector.c
index 8b0b1d1..7389831 100644
--- a/libgnomeui/gnome-image-selector.c
+++ b/libgnomeui/gnome-image-selector.c
@@ -41,6 +41,7 @@
#include <libgnome/gnome-i18n.h>
#include <libgnomeui/gnome-icon-selector-component.h>
#include <bonobo/bonobo-moniker-util.h>
+#include <bonobo/bonobo-exception.h>
#include "gnome-image-selector.h"
struct _GnomeImageSelectorPrivate {
@@ -97,30 +98,22 @@ gnome_image_selector_init (GnomeImageSelector *gselector)
}
GtkWidget *
-gnome_image_selector_construct (GnomeImageSelector *iselector,
- GNOME_Selector corba_selector,
- Bonobo_UIContainer uic)
-{
- g_return_val_if_fail (iselector != NULL, NULL);
- g_return_val_if_fail (GNOME_IS_IMAGE_SELECTOR (iselector), NULL);
- g_return_val_if_fail (corba_selector != CORBA_OBJECT_NIL, NULL);
-
- return (GtkWidget *) gnome_selector_client_construct
- (GNOME_SELECTOR_CLIENT (iselector), corba_selector, uic);
-}
-
-GtkWidget *
gnome_image_selector_new (void)
{
- GNOME_Selector selector;
- CORBA_Environment ev;
+ GnomeImageSelector *iselector;
- CORBA_exception_init (&ev);
- selector = bonobo_get_object ("OAFIID:GNOME_UI_Component_IconSelector",
- "GNOME/Selector", &ev);
- CORBA_exception_free (&ev);
+ iselector = g_object_new (gnome_image_selector_get_type (),
+ "want-entry-widget", TRUE,
+ "want-selector-widget", TRUE,
+ "want-browse-button", TRUE,
+ "want-clear-button", TRUE,
+ "want-default-button", TRUE,
+ NULL);
- return gnome_image_selector_new_from_selector (selector, CORBA_OBJECT_NIL);
+ return (GtkWidget *) gnome_selector_client_construct
+ (GNOME_SELECTOR_CLIENT (iselector),
+ "OAFIID:GNOME_UI_Component_IconSelector",
+ CORBA_OBJECT_NIL);
}
GtkWidget *
@@ -133,7 +126,8 @@ gnome_image_selector_new_from_selector (GNOME_Selector corba_selector,
iselector = g_object_new (gnome_image_selector_get_type (), NULL);
- return gnome_image_selector_construct (iselector, corba_selector, uic);
+ return (GtkWidget *) gnome_selector_client_construct_from_objref
+ (GNOME_SELECTOR_CLIENT (iselector), corba_selector, uic);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]