[gnome-clocks] Port alarm setup dialog to composite template
- From: Evgeny Bobkin <ebobkin src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-clocks] Port alarm setup dialog to composite template
- Date: Wed, 17 Jul 2013 07:43:12 +0000 (UTC)
commit cc0bb604bd4c965a3de3cee38f5ba4fc0e2571f8
Author: Evgeny Bobkin <evgen ibqn gmail com>
Date: Mon Jul 15 15:56:57 2013 +0200
Port alarm setup dialog to composite template
https://bugzilla.gnome.org/show_bug.cgi?id=704251
Makefile.am | 1 +
data/gnome-clocks.gresource.xml | 1 +
data/ui/alarm.ui | 256 +------------------------------
data/ui/alarmsetupdialog.ui | 329 +++++++++++++++++++++++++++++++++++++++
po/POTFILES.in | 1 +
src/alarm.vala | 31 ++--
6 files changed, 346 insertions(+), 273 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 70fe9e6..5d8dcad 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -136,6 +136,7 @@ EXTRA_DIST = \
data/org.gnome.clocks.gschema.xml.in \
data/gnome-clocks.gresource.xml \
data/ui/alarm.ui \
+ data/ui/alarmsetupdialog.ui \
data/ui/menu.ui \
data/ui/stopwatch.ui \
data/ui/timer.ui \
diff --git a/data/gnome-clocks.gresource.xml b/data/gnome-clocks.gresource.xml
index 0fba83a..8c18b5d 100644
--- a/data/gnome-clocks.gresource.xml
+++ b/data/gnome-clocks.gresource.xml
@@ -11,6 +11,7 @@
<file preprocess="xml-stripblanks">ui/worldlocationdialog.ui</file>
<file preprocess="xml-stripblanks">ui/world.ui</file>
<file preprocess="xml-stripblanks">ui/alarm.ui</file>
+ <file preprocess="xml-stripblanks">ui/alarmsetupdialog.ui</file>
<file preprocess="xml-stripblanks">ui/stopwatch.ui</file>
<file preprocess="xml-stripblanks">ui/timer.ui</file>
</gresource>
diff --git a/data/ui/alarm.ui b/data/ui/alarm.ui
index 724651c..ec66be8 100644
--- a/data/ui/alarm.ui
+++ b/data/ui/alarm.ui
@@ -13,7 +13,7 @@
<property name="sensitive">False</property>
<property name="can_focus">False</property>
<property name="icon_name">alarm-symbolic</property>
- <property name="icon-size">6</property>
+ <property name="icon_size">6</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -40,16 +40,6 @@
</packing>
</child>
</object>
- <object class="GtkAdjustment" id="h_adjustment">
- <property name="upper">100</property>
- <property name="step_increment">1</property>
- <property name="page_increment">10</property>
- </object>
- <object class="GtkAdjustment" id="m_adjustment">
- <property name="upper">59</property>
- <property name="step_increment">1</property>
- <property name="page_increment">10</property>
- </object>
<object class="GtkGrid" id="ringing_panel">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -127,248 +117,4 @@
</packing>
</child>
</object>
- <object class="GtkGrid" id="setup_dialog_content">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="row_spacing">12</property>
- <child>
- <object class="GtkGrid" id="time_grid">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">center</property>
- <property name="margin_top">12</property>
- <property name="hexpand">True</property>
- <property name="column_spacing">6</property>
- <style>
- <class name="clocks-alarm-setup-time"/>
- </style>
- <child>
- <object class="GtkAlignment" id="alignment1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xscale">0</property>
- <property name="yscale">0</property>
- <property name="left_padding">6</property>
- <property name="right_padding">6</property>
- <child>
- <object class="GtkLabel" id="dummy_label1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="h_spinbutton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="activates_default">True</property>
- <property name="xalign">0.5</property>
- <property name="invisible_char_set">True</property>
- <property name="input_purpose">number</property>
- <property name="orientation">vertical</property>
- <property name="adjustment">h_adjustment</property>
- <property name="numeric">True</property>
- <property name="wrap">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label">∶</property>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="m_spinbutton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="activates_default">True</property>
- <property name="xalign">0.5</property>
- <property name="invisible_char_set">True</property>
- <property name="input_purpose">number</property>
- <property name="orientation">vertical</property>
- <property name="adjustment">m_adjustment</property>
- <property name="numeric">True</property>
- <property name="wrap">True</property>
- </object>
- <packing>
- <property name="left_attach">3</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkAlignment" id="am_pm_alignment">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xscale">0</property>
- <property name="yscale">0</property>
- <property name="left_padding">6</property>
- <property name="right_padding">6</property>
- <child>
- <object class="GtkLabel" id="dummy_label2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">4</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkGrid" id="grid2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">center</property>
- <property name="margin_left">24</property>
- <property name="margin_right">24</property>
- <property name="margin_top">12</property>
- <property name="margin_bottom">12</property>
- <property name="row_spacing">9</property>
- <property name="column_spacing">6</property>
- <property name="row_homogeneous">True</property>
- <child>
- <object class="GtkLabel" id="name_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Name</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="repeat_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Repeat Every</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="name_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="invisible_char_set">True</property>
- <property name="activates_default">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="day_buttons_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="homogeneous">True</property>
- <style>
- <class name="linked"/>
- </style>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="active_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Active</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkSwitch" id="active_switch">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="halign">start</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- </object>
- <object class="GtkSizeGroup" id="am_pm_sizegroup">
- <widgets>
- <widget name="dummy_label1"/>
- <widget name="dummy_label2"/>
- </widgets>
- </object>
</interface>
diff --git a/data/ui/alarmsetupdialog.ui b/data/ui/alarmsetupdialog.ui
new file mode 100644
index 0000000..4aa89f0
--- /dev/null
+++ b/data/ui/alarmsetupdialog.ui
@@ -0,0 +1,329 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.10 -->
+ <object class="GtkAdjustment" id="h_adjustment">
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="m_adjustment">
+ <property name="upper">59</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <template class="ClocksAlarmSetupDialog" parent="GtkDialog">
+ <property name="can_focus">False</property>
+ <property name="resizable">False</property>
+ <property name="modal">True</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <property name="gravity">center</property>
+ <property name="has_resize_grip">False</property>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox1">
+ <property name="can_focus">False</property>
+ <property name="valign">start</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area1">
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button1">
+ <property name="label">gtk-cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button2">
+ <property name="label">Done</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkGrid" id="setup_dialog_content">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">12</property>
+ <child>
+ <object class="GtkGrid" id="time_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ <property name="margin_top">12</property>
+ <property name="hexpand">True</property>
+ <property name="column_spacing">6</property>
+ <style>
+ <class name="clocks-alarm-setup-time"/>
+ </style>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <property name="left_padding">6</property>
+ <property name="right_padding">6</property>
+ <child>
+ <object class="GtkLabel" id="dummy_label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">∶</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="m_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="activates_default">True</property>
+ <property name="text" translatable="yes">0</property>
+ <property name="xalign">0.5</property>
+ <property name="input_purpose">number</property>
+ <property name="orientation">vertical</property>
+ <property name="adjustment">m_adjustment</property>
+ <property name="numeric">True</property>
+ <property name="wrap">True</property>
+ <signal name="output" handler="show_leading_zeros" object="ClocksAlarmSetupDialog"
swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="am_pm_alignment">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <property name="left_padding">6</property>
+ <property name="right_padding">6</property>
+ <child>
+ <object class="GtkLabel" id="dummy_label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="h_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="activates_default">True</property>
+ <property name="text" translatable="yes">0</property>
+ <property name="xalign">0.5</property>
+ <property name="input_purpose">number</property>
+ <property name="orientation">vertical</property>
+ <property name="adjustment">h_adjustment</property>
+ <property name="numeric">True</property>
+ <property name="wrap">True</property>
+ <signal name="output" handler="show_leading_zeros" object="ClocksAlarmSetupDialog"
swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ <property name="margin_left">24</property>
+ <property name="margin_right">24</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">9</property>
+ <property name="column_spacing">6</property>
+ <property name="row_homogeneous">True</property>
+ <child>
+ <object class="GtkLabel" id="name_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Name</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="repeat_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Repeat Every</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="name_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="activates_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="day_buttons_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="homogeneous">True</property>
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="active_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Active</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="active_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">start</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button1</action-widget>
+ <action-widget response="1">button2</action-widget>
+ </action-widgets>
+ </template>
+ <object class="GtkSizeGroup" id="am_pm_sizegroup">
+ <widgets>
+ <widget name="dummy_label1"/>
+ <widget name="dummy_label2"/>
+ </widgets>
+ </object>
+</interface>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index eac7181..221cb9e 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -10,6 +10,7 @@ src/widgets.vala
src/window.vala
src/world.vala
[type: gettext/glade]data/ui/alarm.ui
+[type: gettext/glade]data/ui/alarmsetupdialog.ui
[type: gettext/glade]data/ui/menu.ui
[type: gettext/glade]data/ui/stopwatch.ui
[type: gettext/glade]data/ui/timer.ui
diff --git a/src/alarm.vala b/src/alarm.vala
index 47c42e1..21f12e7 100644
--- a/src/alarm.vala
+++ b/src/alarm.vala
@@ -252,37 +252,32 @@ private class Item : Object, ContentItem {
}
}
+[GtkTemplate (ui = "/org/gnome/clocks/ui/alarmsetupdialog.ui")]
private class SetupDialog : Gtk.Dialog {
private Utils.WallClock.Format format;
+ [GtkChild]
private Gtk.SpinButton h_spinbutton;
+ [GtkChild]
private Gtk.SpinButton m_spinbutton;
+ [GtkChild]
private Gtk.Entry name_entry;
private AmPmToggleButton am_pm_button;
private Gtk.ToggleButton[] day_buttons;
+ [GtkChild]
private Gtk.Switch active_switch;
+ [GtkChild]
+ private Gtk.Box day_buttons_box;
+ [GtkChild]
+ private Gtk.Alignment am_pm_alignment;
+ [GtkChild]
+ private Gtk.SizeGroup am_pm_sizegroup;
public SetupDialog (Gtk.Window parent, Item? alarm) {
- Object (transient_for: parent, modal: true, title: alarm != null ? _("Edit Alarm") : _("New Alarm"));
-
- add_buttons (Gtk.Stock.CANCEL, 0, _("_Done"), 1);
- set_default_response (1);
+ Object (transient_for: parent, title: alarm != null ? _("Edit Alarm") : _("New Alarm"));
format = Utils.WallClock.get_default ().format;
am_pm_button = new AmPmToggleButton ();
- // Get objects from the ui file
- var builder = Utils.load_ui ("alarm.ui");
- var grid = builder.get_object ("setup_dialog_content") as Gtk.Grid;
- var am_pm_alignment = builder.get_object ("am_pm_alignment") as Gtk.Alignment;
- var am_pm_sizegroup = builder.get_object ("am_pm_sizegroup") as Gtk.SizeGroup;
- var day_buttons_box = builder.get_object ("day_buttons_box") as Gtk.Box;
- h_spinbutton = builder.get_object ("h_spinbutton") as Gtk.SpinButton;
- m_spinbutton = builder.get_object ("m_spinbutton") as Gtk.SpinButton;
- name_entry = builder.get_object ("name_entry") as Gtk.Entry;
- active_switch = builder.get_object ("active_switch") as Gtk.Switch;
-
- h_spinbutton.output.connect (show_leading_zeros);
- m_spinbutton.output.connect (show_leading_zeros);
if (format == Utils.WallClock.Format.TWENTYFOUR)
// 24h format
h_spinbutton.set_range (0, 23);
@@ -310,7 +305,6 @@ private class SetupDialog : Gtk.Dialog {
day_buttons_box.pack_start (day_buttons[day_number]);
}
- get_content_area ().add (grid);
set_from_alarm (alarm);
}
@@ -392,6 +386,7 @@ private class SetupDialog : Gtk.Dialog {
}
}
+ [GtkCallback]
private bool show_leading_zeros (Gtk.SpinButton spin_button) {
spin_button.set_text ("%02i".printf (spin_button.get_value_as_int ()));
return true;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]