anjuta r3991 - in trunk: . libanjuta libanjuta/interfaces plugins/document-manager plugins/sourceview
- From: jhs svn gnome org
- To: svn-commits-list gnome org
- Subject: anjuta r3991 - in trunk: . libanjuta libanjuta/interfaces plugins/document-manager plugins/sourceview
- Date: Fri, 6 Jun 2008 23:36:23 +0000 (UTC)
Author: jhs
Date: Fri Jun 6 23:36:23 2008
New Revision: 3991
URL: http://svn.gnome.org/viewvc/anjuta?rev=3991&view=rev
Log:
Reverted changes from Revision 3989
Removed:
trunk/libanjuta/anjuta-message-area.c
trunk/libanjuta/anjuta-message-area.h
Modified:
trunk/ChangeLog
trunk/libanjuta/Makefile.am
trunk/libanjuta/interfaces/libanjuta.idl
trunk/plugins/document-manager/anjuta-docman.c
trunk/plugins/document-manager/anjuta-docman.h
trunk/plugins/document-manager/plugin.c
trunk/plugins/sourceview/sourceview.c
Modified: trunk/libanjuta/Makefile.am
==============================================================================
--- trunk/libanjuta/Makefile.am (original)
+++ trunk/libanjuta/Makefile.am Fri Jun 6 23:36:23 2008
@@ -31,7 +31,6 @@
anjuta-status.c \
anjuta-encodings.c \
anjuta-convert.c \
- anjuta-message-area.c \
anjuta-preferences-dialog.c \
anjuta-preferences.c \
anjuta-plugin.c \
@@ -67,8 +66,7 @@
anjuta-command.c \
anjuta-command.h \
anjuta-async-command.c \
- anjuta-async-command.h \
- anjuta-message-area.h
+ anjuta-async-command.h
if HAVE_PLUGIN_GLADE
@@ -101,7 +99,6 @@
anjuta-status.h \
anjuta-encodings.h \
anjuta-convert.h \
- anjuta-message-area.h \
anjuta-plugin.h \
anjuta-plugin-description.h \
anjuta-plugin-manager.h \
Modified: trunk/libanjuta/interfaces/libanjuta.idl
==============================================================================
--- trunk/libanjuta/interfaces/libanjuta.idl (original)
+++ trunk/libanjuta/interfaces/libanjuta.idl Fri Jun 6 23:36:23 2008
@@ -2341,17 +2341,6 @@
* Sets the given document as current document.
*/
void set_current_document (IAnjutaDocument *document);
-
- /**
- * ianjuta_document_manager_set_message_area:
- * @obj: Self
- * @document: the document we change the message area.
- * @message_area: the widget to use as the message area.
- * @err: Error propagation and reporting.
- *
- * Sets the message area for the given document.
- */
- void set_message_area (IAnjutaDocument *document, GtkWidget *message_area);
/**
* ianjuta_document_manager_get_doc_widgets:
Modified: trunk/plugins/document-manager/anjuta-docman.c
==============================================================================
--- trunk/plugins/document-manager/anjuta-docman.c (original)
+++ trunk/plugins/document-manager/anjuta-docman.c Fri Jun 6 23:36:23 2008
@@ -22,7 +22,6 @@
#include <libanjuta/anjuta-utils.h>
#include <libanjuta/anjuta-preferences.h>
#include <libanjuta/anjuta-debug.h>
-#include <libanjuta/anjuta-message-area.h>
#include <libanjuta/interfaces/ianjuta-file.h>
#include <libanjuta/interfaces/ianjuta-markable.h>
#include <libanjuta/interfaces/ianjuta-file-savable.h>
@@ -64,7 +63,7 @@
AnjutaPreferences *preferences;
GList *pages; /* list of AnjutaDocmanPage's */
AnjutaDocmanPage *cur_page;
- IAnjutaDocument *current_document; /* normally == IANJUTA_DOCUMENT (cur_page->doc) */
+ IAnjutaDocument *current_document; /* normally == IANJUTA_DOCUMENT (cur_page->widget) */
GtkWidget *fileselection;
@@ -78,9 +77,7 @@
};
struct _AnjutaDocmanPage {
- IAnjutaDocument *doc; /* a IAnjutaDocument */
- GtkWidget *widget; /* notebook-page widget */
- GtkWidget *message_area; /* page message area */
+ GtkWidget *widget; /* notebook-page widget, a GTK_WIDGET (IAnjutaDocument*) */
GtkWidget *box; /* notebook-tab-label parent widget */
GtkWidget *menu_box; /* notebook-tab-menu parent widget */
GtkWidget *close_image;
@@ -95,7 +92,7 @@
static void anjuta_docman_order_tabs (AnjutaDocman *docman);
static void anjuta_docman_update_page_label (AnjutaDocman *docman,
- IAnjutaDocument *doc);
+ GtkWidget *doc_widget);
static void anjuta_docman_grab_text_focus (AnjutaDocman *docman);
static gboolean anjuta_docman_sort_pagelist (AnjutaDocman *docman);
static void on_notebook_switch_page (GtkNotebook *notebook,
@@ -104,8 +101,6 @@
static AnjutaDocmanPage *
anjuta_docman_get_page_for_document (AnjutaDocman *docman,
IAnjutaDocument *doc);
-static AnjutaDocmanPage *
-anjuta_docman_get_nth_page (AnjutaDocman *docman, gint page_num);
static void
on_document_toggled (GtkAction* action,
@@ -178,7 +173,8 @@
const gchar *tab_name;
gchar *accel;
- page = anjuta_docman_get_nth_page (docman, i);
+ page = anjuta_docman_get_page_for_document (docman,
+ IANJUTA_DOCUMENT (gtk_notebook_get_nth_page (GTK_NOTEBOOK (docman), i)));
/* NOTE: the action is associated to the position of the tab in
* the notebook not to the tab itself! This is needed to work
@@ -246,10 +242,12 @@
GList* node;
for (node = docman->priv->pages; node != NULL; node = g_list_next (node))
{
+ IAnjutaDocument *doc;
page = (AnjutaDocmanPage *) node->data;
if (page->close_button == GTK_WIDGET (button))
{
- anjuta_docman_set_current_document (docman, page->doc);
+ doc = IANJUTA_DOCUMENT (page->widget);
+ anjuta_docman_set_current_document (docman, doc);
break;
}
}
@@ -357,7 +355,7 @@
GtkWidget *close_button;
GtkWidget *close_pixmap;
GtkWidget *label, *menu_label;
- GtkWidget *vbox, *box, *menu_box;
+ GtkWidget *box, *menu_box;
GtkWidget *event_hbox;
GtkWidget *event_box;
#if !GTK_CHECK_VERSION (2,12,0)
@@ -477,10 +475,6 @@
/* menu box */
gtk_box_pack_start (GTK_BOX (menu_box), menu_label, TRUE, TRUE, 0);
gtk_widget_show_all (menu_box);
-
- /* main box */
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_box_pack_end (GTK_BOX (vbox), GTK_WIDGET (doc), TRUE, TRUE, 0);
g_signal_connect (G_OBJECT (close_button), "clicked",
G_CALLBACK (on_notebook_page_close_button_click),
@@ -498,9 +492,7 @@
G_CALLBACK (on_notebook_tab_btnrelease),
docman);
- page->widget = GTK_WIDGET (vbox); /* this is the notebook-page child widget */
- page->doc = doc;
- page->message_area = NULL;
+ page->widget = GTK_WIDGET (doc); /* this is also the notebook-page child widget */
page->box = box;
page->close_image = close_pixmap;
page->close_button = close_button;
@@ -875,17 +867,17 @@
static void
on_notebook_switch_page (GtkNotebook *notebook,
- GtkNotebookPage *notebook_page,
+ GtkNotebookPage *page,
gint page_num, AnjutaDocman *docman)
{
if (!docman->priv->shutingdown)
{
- AnjutaDocmanPage *page;
+ GtkWidget *page_widget;
gchar* action_name;
GtkAction* action;
- page = anjuta_docman_get_nth_page (docman, page_num);
- anjuta_docman_set_current_document (docman, page->doc);
+ page_widget = gtk_notebook_get_nth_page (notebook, page_num);
+ anjuta_docman_set_current_document (docman, IANJUTA_DOCUMENT (page_widget));
/* activate the right item in the documents menu */
action_name = g_strdup_printf ("Tab_%d", page_num);
@@ -910,7 +902,7 @@
&& !anjuta_preferences_get_int (docman->priv->preferences, EDITOR_TABS_ORDERING)
&& anjuta_preferences_get_int (docman->priv->preferences, EDITOR_TABS_RECENT_FIRST))
{
- gtk_notebook_reorder_child (notebook, page->widget, 0);
+ gtk_notebook_reorder_child (notebook, page_widget, 0);
}
anjuta_docman_update_documents_menu_status (docman);
}
@@ -920,7 +912,7 @@
on_document_save_point (IAnjutaDocument *doc, gboolean entering,
AnjutaDocman *docman)
{
- anjuta_docman_update_page_label (docman, doc);
+ anjuta_docman_update_page_label (docman, GTK_WIDGET (doc));
}
static void
@@ -947,11 +939,11 @@
anjuta_docman_set_current_document (docman, NULL);
else
{
- AnjutaDocmanPage *next_page;
+ GtkWidget *page_widget;
/* set a replacement active document */
page_num = gtk_notebook_get_current_page (GTK_NOTEBOOK (docman));
- next_page = anjuta_docman_get_nth_page (docman, page_num);
- anjuta_docman_set_current_document (docman, next_page->doc);
+ page_widget = gtk_notebook_get_nth_page (GTK_NOTEBOOK (docman), page_num);
+ anjuta_docman_set_current_document (docman, IANJUTA_DOCUMENT (page_widget));
}
}
anjuta_docman_page_destroy (page);
@@ -1082,14 +1074,15 @@
if (!doc)
return;
+ /* removing child-widget unrefs that as well as all tab-related widgets
+ CHECKME except
+ page->close_button, its refcount to 5
+ page->widget, its refcount to 1, & surviving object seems to be used elsewhere */
+ gtk_container_remove (GTK_CONTAINER (docman), GTK_WIDGET (doc));
+
page = anjuta_docman_get_page_for_document (docman, doc);
if (page)
{
- /* removing child-widget unrefs that as well as all tab-related widgets
- CHECKME except
- page->close_button, its refcount to 5
- page->widget, its refcount to 1, & surviving object seems to be used elsewhere */
- gtk_container_remove (GTK_CONTAINER (docman), page->widget);
if (page == docman->priv->cur_page)
docman->priv->cur_page = NULL;
docman->priv->pages = g_list_remove (docman->priv->pages, (gpointer)page);
@@ -1140,19 +1133,13 @@
page = node->data;
g_assert (page);
- if (page->doc == doc)
+ if (page->widget == GTK_WIDGET (doc))
return page;
node = g_list_next (node);
}
return NULL;
}
-static AnjutaDocmanPage *
-anjuta_docman_get_nth_page (AnjutaDocman *docman, gint page_num)
-{
- return g_list_nth_data (docman->priv->pages, page_num);
-}
-
IAnjutaDocument *
anjuta_docman_get_current_document (AnjutaDocman *docman)
{
@@ -1204,7 +1191,7 @@
gtk_widget_set_sensitive (page->mime_icon, TRUE);
}
page_num = gtk_notebook_page_num (GTK_NOTEBOOK (docman),
- page->widget);
+ GTK_WIDGET (doc));
g_signal_handlers_block_by_func (G_OBJECT (docman),
(gpointer) on_notebook_switch_page,
(gpointer) docman);
@@ -1272,38 +1259,6 @@
g_signal_emit (G_OBJECT (docman), docman_signals[DOC_CHANGED], 0, doc);
}
-void
-anjuta_docman_set_message_area (AnjutaDocman *docman, IAnjutaDocument* doc,
- GtkWidget *message_area)
-{
- AnjutaDocmanPage *page;
-
- if (doc != NULL)
- {
- page = anjuta_docman_get_page_for_document (docman, doc);
- if (page->message_area != message_area)
- {
- if (page->message_area != NULL)
- gtk_widget_destroy (page->message_area);
-
- page->message_area = message_area;
-
- if (message_area == NULL)
- return;
-
- gtk_widget_show (message_area);
- gtk_box_pack_start (GTK_BOX (page->widget),
- message_area,
- FALSE,
- FALSE,
- 0);
-
- g_object_add_weak_pointer (G_OBJECT (page->message_area),
- (gpointer *)&page->message_area);
- }
- }
-}
-
IAnjutaEditor *
anjuta_docman_goto_uri_line (AnjutaDocman *docman, const gchar *uri, gint lineno)
{
@@ -1477,10 +1432,11 @@
AnjutaDocmanPage *page;
page = (AnjutaDocmanPage *) node->data;
- if (strcmp (fname, ianjuta_document_get_filename (page->doc, NULL)) == 0)
+ doc = IANJUTA_DOCUMENT (page->widget);
+ if (strcmp (fname, ianjuta_document_get_filename (doc, NULL)) == 0)
{
g_free (fname);
- return ianjuta_file_get_uri (IANJUTA_FILE (page->doc), NULL);
+ return ianjuta_file_get_uri (IANJUTA_FILE (doc), NULL);
}
}
g_free (fname);
@@ -1501,7 +1457,7 @@
{
AnjutaDocmanPage* page;
page = (AnjutaDocmanPage *)node->data;
- if (page && page->doc == doc)
+ if (page && IANJUTA_DOCUMENT (page->widget) == doc)
{
gint curindx;
curindx = gtk_notebook_page_num (GTK_NOTEBOOK (docman), page->widget);
@@ -1520,15 +1476,17 @@
}
static void
-anjuta_docman_update_page_label (AnjutaDocman *docman, IAnjutaDocument *doc)
+anjuta_docman_update_page_label (AnjutaDocman *docman, GtkWidget *page_widget)
{
AnjutaDocmanPage *page;
gchar *basename;
gchar *uri;
+ IAnjutaDocument *doc;
const gchar* doc_filename;
gchar* dirty_char;
gchar* label;
+ doc = IANJUTA_DOCUMENT (page_widget);
if (doc == NULL)
return;
@@ -1582,11 +1540,11 @@
AnjutaDocmanPage *page;
page = (AnjutaDocmanPage *) node->data;
- if (IANJUTA_IS_EDITOR (page->doc))
+ if (IANJUTA_IS_EDITOR (page->widget))
{
IAnjutaEditor* te;
- te = IANJUTA_EDITOR (page->doc);
+ te = IANJUTA_EDITOR (page->widget);
ianjuta_markable_delete_all_markers (IANJUTA_MARKABLE (te), marker, NULL);
}
}
@@ -1602,15 +1560,15 @@
AnjutaDocmanPage *page;
page = (AnjutaDocmanPage *) node->data;
- if (IANJUTA_IS_EDITOR (page->doc))
+ if (IANJUTA_IS_EDITOR (page->widget))
{
gchar *uri;
- uri = ianjuta_file_get_uri (IANJUTA_FILE (page->doc), NULL);
+ uri = ianjuta_file_get_uri (IANJUTA_FILE (page->widget), NULL);
if (uri)
{
g_free (uri);
- ianjuta_markable_unmark (IANJUTA_MARKABLE (page->doc), -1, -1, NULL);
+ ianjuta_markable_unmark (IANJUTA_MARKABLE (page->widget), -1, -1, NULL);
}
}
}
@@ -1675,8 +1633,7 @@
anjuta_docman_order_tabs (AnjutaDocman *docman)
{
gint i, num_pages;
- GList *node;
- AnjutaDocmanPage *page;
+ GtkWidget *page_widget;
order_struct *tab_labels;
GtkNotebook *notebook;
@@ -1686,7 +1643,6 @@
if (num_pages < 2)
return;
tab_labels = g_new0 (order_struct, num_pages);
- node = docman->priv->pages;
for (i = 0; i < num_pages; i++)
{
/*new0 NULL'ed things already
@@ -1697,12 +1653,11 @@
}
else
*/
- if (node != NULL && node->data != NULL)
+ if ((page_widget = gtk_notebook_get_nth_page (notebook, i)) != NULL)
{
- page = node->data;
- tab_labels[i].m_widget = page->widget; /* CHECKME needed ? */
- tab_labels[i].m_label = ianjuta_document_get_filename (page->doc, NULL);
- node = g_list_next (node);
+ tab_labels[i].m_widget = page_widget; /* CHECKME needed ? */
+ tab_labels[i].m_label = ianjuta_document_get_filename (
+ IANJUTA_DOCUMENT (page_widget), NULL);
}
}
qsort (tab_labels, num_pages, sizeof(order_struct), do_ordertab1);
@@ -1763,12 +1718,12 @@
AnjutaDocmanPage *page;
page = (AnjutaDocmanPage *) node->data;
- if (page && page->widget && IANJUTA_IS_DOCUMENT (page->doc))
+ if (page && page->widget && IANJUTA_IS_DOCUMENT (page->widget))
{
IAnjutaDocument *doc;
gchar *te_uri;
- doc = page->doc;
+ doc = IANJUTA_DOCUMENT (page->widget);
te_uri = ianjuta_file_get_uri (IANJUTA_FILE (doc), NULL);
if (te_uri)
{
@@ -1806,17 +1761,19 @@
AnjutaDocmanPage *page;
page = (AnjutaDocmanPage *) node->data;
- if (page && page->doc && IANJUTA_IS_DOCUMENT (page->doc))
+ if (page && page->widget && IANJUTA_IS_DOCUMENT (page->widget))
{
+ IAnjutaDocument *doc;
gchar *te_uri;
- te_uri = ianjuta_file_get_uri (IANJUTA_FILE (page->doc), NULL);
+ doc = IANJUTA_DOCUMENT (page->widget);
+ te_uri = ianjuta_file_get_uri (IANJUTA_FILE (doc), NULL);
if (te_uri)
{
if (strcmp (te_uri, file_uri) == 0)
{
g_free (te_uri);
- return page->doc;
+ return doc;
}
g_free (te_uri);
}
@@ -1837,8 +1794,8 @@
{
AnjutaDocmanPage *page;
page = (AnjutaDocmanPage *) node->data;
- if (page && page->doc)
- wids = g_list_prepend (wids, page->doc);
+ if (page && page->widget)
+ wids = g_list_prepend (wids, page->widget);
}
if (wids)
wids = g_list_reverse (wids);
Modified: trunk/plugins/document-manager/anjuta-docman.h
==============================================================================
--- trunk/plugins/document-manager/anjuta-docman.h (original)
+++ trunk/plugins/document-manager/anjuta-docman.h Fri Jun 6 23:36:23 2008
@@ -75,9 +75,6 @@
void anjuta_docman_set_current_document (AnjutaDocman *docman, IAnjutaDocument *doc);
-void anjuta_docman_set_message_area (AnjutaDocman *docman, IAnjutaDocument *doc,
- GtkWidget *message_area);
-
IAnjutaEditor *anjuta_docman_goto_uri_line (AnjutaDocman *docman,
const gchar *uri,
gint lineno);
Modified: trunk/plugins/document-manager/plugin.c
==============================================================================
--- trunk/plugins/document-manager/plugin.c (original)
+++ trunk/plugins/document-manager/plugin.c Fri Jun 6 23:36:23 2008
@@ -1917,17 +1917,6 @@
anjuta_docman_set_current_document (docman, doc);
}
-static void
-ianjuta_docman_set_message_area (IAnjutaDocumentManager *plugin,
- IAnjutaDocument *doc,
- GtkWidget *message_area,
- GError **e)
-{
- AnjutaDocman *docman;
- docman = ANJUTA_DOCMAN ((ANJUTA_PLUGIN_DOCMAN (plugin)->docman));
- anjuta_docman_set_message_area (docman, doc, message_area);
-}
-
static GList*
ianjuta_docman_get_doc_widgets (IAnjutaDocumentManager *plugin, GError **e)
{
@@ -2030,7 +2019,6 @@
iface->goto_uri_line_mark = ianjuta_docman_goto_uri_line_mark;
iface->remove_document = ianjuta_docman_remove_document;
iface->set_current_document = ianjuta_docman_set_current_document;
- iface->set_message_area = ianjuta_docman_set_message_area;
}
/* Implement IAnjutaFile interface */
Modified: trunk/plugins/sourceview/sourceview.c
==============================================================================
--- trunk/plugins/sourceview/sourceview.c (original)
+++ trunk/plugins/sourceview/sourceview.c Fri Jun 6 23:36:23 2008
@@ -26,8 +26,6 @@
#include <libanjuta/anjuta-debug.h>
#include <libanjuta/anjuta-preferences.h>
#include <libanjuta/anjuta-encodings.h>
-#include <libanjuta/anjuta-message-area.h>
-#include <libanjuta/anjuta-shell.h>
#include <libanjuta/interfaces/ianjuta-file.h>
#include <libanjuta/interfaces/ianjuta-file-savable.h>
#include <libanjuta/interfaces/ianjuta-markable.h>
@@ -36,7 +34,6 @@
#include <libanjuta/interfaces/ianjuta-print.h>
#include <libanjuta/interfaces/ianjuta-language-support.h>
#include <libanjuta/interfaces/ianjuta-document.h>
-#include <libanjuta/interfaces/ianjuta-document-manager.h>
#include <libanjuta/interfaces/ianjuta-editor.h>
#include <libanjuta/interfaces/ianjuta-editor-selection.h>
#include <libanjuta/interfaces/ianjuta-editor-assist.h>
@@ -164,7 +161,7 @@
/* Callback for dialog below */
static void
-on_reload_dialog_response (GtkWidget *message_area, gint res, Sourceview *sv)
+on_reload_dialog_response (GtkWidget *dlg, gint res, Sourceview *sv)
{
if (res == GTK_RESPONSE_YES)
{
@@ -176,7 +173,7 @@
/* Set dirty */
gtk_text_buffer_set_modified(GTK_TEXT_BUFFER(sv->priv->document), TRUE);
}
- gtk_widget_destroy (message_area);
+ gtk_widget_destroy (dlg);
}
/* Update Monitor on load/save */
@@ -196,44 +193,42 @@
static gboolean
on_sourceview_uri_changed_prompt (Sourceview* sv)
{
- GtkWidget *message_area;
- IAnjutaDocumentManager *docman;
- IAnjutaDocument *doc;
- AnjutaShell *shell;
+ GtkWidget *dlg;
+ GtkWidget *parent;
gchar *buff;
- g_print ("OK\n");
-
buff =
g_strdup_printf (_
- ("The file '%s' on the disk is more recent than "
+ ("The file '%s' on the disk is more recent than\n"
"the current buffer.\nDo you want to reload it?"),
ianjuta_document_get_filename(IANJUTA_DOCUMENT(sv), NULL));
-
- shell = ANJUTA_PLUGIN (sv->priv->plugin)->shell;
- docman = anjuta_shell_get_interface (shell, IAnjutaDocumentManager, NULL);
- if (!docman)
- return TRUE;
- doc = IANJUTA_DOCUMENT (sv);
-
- message_area = anjuta_message_area_new (buff, GTK_STOCK_DIALOG_WARNING);
- anjuta_message_area_add_button (ANJUTA_MESSAGE_AREA (message_area),
- GTK_STOCK_REFRESH,
- GTK_RESPONSE_YES);
- anjuta_message_area_add_button (ANJUTA_MESSAGE_AREA (message_area),
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_NO);
+
+ parent = gtk_widget_get_toplevel (GTK_WIDGET (sv));
+
+ dlg = gtk_message_dialog_new (GTK_WINDOW (parent),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_WARNING,
+ GTK_BUTTONS_NONE, buff);
+ gtk_dialog_add_button (GTK_DIALOG (dlg),
+ GTK_STOCK_NO,
+ GTK_RESPONSE_NO);
+ anjuta_util_dialog_add_button (GTK_DIALOG (dlg),
+ _("_Reload"),
+ GTK_STOCK_REFRESH,
+ GTK_RESPONSE_YES);
g_free (buff);
- g_signal_connect (G_OBJECT(message_area), "response",
+ gtk_window_set_transient_for (GTK_WINDOW (dlg),
+ GTK_WINDOW (parent));
+
+ g_signal_connect (G_OBJECT(dlg), "response",
G_CALLBACK (on_reload_dialog_response),
sv);
+ gtk_widget_show (dlg);
- /*g_signal_connect_swapped (G_OBJECT(message_area), "delete-event",
+ g_signal_connect_swapped (G_OBJECT(dlg), "delete-event",
G_CALLBACK (gtk_widget_destroy),
- dlg);*/
-
- ianjuta_document_manager_set_message_area (docman, doc, message_area, NULL);
+ dlg);
return FALSE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]