Из-за занятости в других проектах этот спринт получился у нас совсем незначительным по затраченному времени - менее 20 идеальных инженерных часов. Тем не менее, мы успели выполнить десять задач из нашего бэк-лога и ещё n-ное количество неучтённых задач.
Как видно из списка, мы поработали над наполнением меню Document, где появились два дополнительных подменю, и всего их теперь стало три:
Собственно, всё, что мы сейчас делаем, нацелено на одну небольшую задачу: догнать в пользовательском интерфейсе начальное состояние программы, в котором сразу было зашито несколько предопределённых объектов - нотоносцев, групп, систем, разделов. Хотя и кажется, что это совсем немного, но это немного именно для «зашитого» состояния. Когда вводится возможность этими объектами управлять динамически, оказывается, что это не так уж и мало. Нас спрашивают: ну когда же вы уже покажете нам первые ноты. К сожалению, нельзя принести в дом книги и расставить их на полке, если ещё нет полки и не построен дом. Торжественно обещаем, что мы сразу приступим к нотам, как только полностью реализуем контроль над теми несколькими объектами, которые введены в программу с самого начала.
Итак, разделы (sections). Теперь мы можем добавлять новый раздел до и после текущего, а также удалять его:
Что из себя представляет раздел? Это часть документа с обособленными настройками, составом инструментов и нумерацией страниц. Для сборника разнородных пьес каждый раздел может содержать пьесу. Разделы можно будет безболезненно менять местами, добавлять из других файлов и экспортировать в отдельный файл.
В подменю Нотный стан (Staff) мы добавили две новых команды:
Это добавление нового стана под текущим (Add Below) и снятие пустого стана (Hide Empty Staff). Снятие станов это то, без чего невозможно сверстать симфоническую партитуру. Часто требуется снять или восстановить пустые станы во всей системе. Поэтому мы добавили соответствующие команды в меню Staff System (Система нотоносцев):
Разумеется, все команды, показанные в меню, являются полностью работающими, с вытекающими из них Undo / Redo и так далее.
Кстати, если все станы системы пустые, то снимаются не все - один остаётся, чтобы по нему можно было ориентироваться, видеть изменения темпа, размера и количество пустых тактов. В отличие от привычного по программе на букву Ф. верхнего стана, мы оставляем нижний стан. В принципе, большой разницы нет, но, наверное, стоит сделать это предметом настройки. (Мы исходили из того, что по правилам при смене количества дивизи внутри одной системы снимаются верхние станы, а нижние остаются. Это не тот же самый принцип, который лежит в основе снятия станов вообще, но близкий, так что мы пока решили придерживаться его и здесь.)
Каждый чих в нашей работе сопровождается автоматическими тестами. Сейчас их количество достигло 422. Мы производим только проверенный продукт. Часть наших тестов проверяет низкоуровневые алгоритмы, проверяя ход их выполнения при разных условиях. Другая часть тестов симулирует пользовательские команды, прогоняя различные сценарии и проверяя, что они дают ожидаемый результат.
Мы продолжаем работу над нашей программой-нотатором, и приглашаем всех заинтересованных на наше следующее спринт-ревью, которое состоится ровно через две недели, в пятницу, 4 июля, в 9:00 по московскому времени.