=-=-=-=-=-=-=-=
План разработки
=-=-=-=-=-=-=-=

Содержание:
-=-=-=-=-=-

1. Требования к версии 1.0.
2. Список задач для версии 1.0.
3. План текущей итерации.
4. План следующей итерации

0. Приблизительные требования для внедрения в эксплуатацию.

- выход. меню, клавиша.
- панели со списком файлов. перемещение клавишами.
- коммандная строка, синхронизированая с панелями.
- поддержка локали (возможность локализации (i18n), перекодировка).
- копирование (меню, клавиша)
- удаление (меню, клавиша)
- поддержка внешнего редактора (брать из переменной EDIT{OR} ??) // 
- перемещение / переименование.
- создание файла, одной клавишей (или двумя).
- создание директории.
- размеры файлов и директорий.
- выделение файлов и каталогов
- маски для выделения.
- поддержка аналога CTRL+O - полноэкранный шелл
- настраиваемый конфиг. (синхронизация с текстовым файлом реестра).
	- экспорт/импорт в текстовый файл.
- возможность настройки временного интервала в реестре для переодического импорта из файла. 
  (желательно real time)




1. Требования к версии 1.0.
-=-=-=-=-=-=-=-=-=-=-=-=-=-

Требования к первой версии является набор приемочных тестов, или сценариев.
Такие сценарии могут быть записаны в виде набора команд - макросов для 
системы очереди событий. Так же для автоматизации приемочных тестов следует
написать систему "фотографирования" содержимого панелей и сравнения с
заренее сохраненным образцом.


Тест 1. Запуск и выход.
- запуск фм.
- выход из фм.


Тест 2. Запуск внешнего приложения:
- запуск фм.
- запуск внешней программы.
- сравнение идентичности вывода запуска из фм, и вывода программы запущеной
  обычным способом.
- выход из фм.


Тест 3. Просмотр директории.
- запуск фм.
- открытие панели директории с файлами.
- проверка результата??
- выход из фм.


Тест 4. Смена текущей директории.
- запуск фм.
- просмотр списка файлов и дерикторий в панели.
- смена директории
- просмотр списка файлов и дерикторий в панели.
- проверка результата??
- выход из фм.


Тест 4. Удаление директории.
- запуск фм.
- открытие панели директории с файлами.
- удаление директории.
- проверка результата.
- выход из фм.


Тест 5. Копирование директории.
- запуск фм.
- открытие в левой панели директории с директорией.
- открытие в правой панели директори для копирования.
- копирование директории.
- проверка результата.
- выход из фм.


Тест 6. Перенос директории.
- запуск фм.
- открытие в левой панели директории с директорией.
- открытие в правой панели директори для копирования.
- перенос директории.
- проверка результата.
- выход из фм.


Тест 7. Просмотр файла.
- запуск фм.
- открытие в левой панели директории с файлом.
- просмотр файла.
- проверка результата??
- выход из фм.


Тест 8. Редактирование файла.
- запуск фм.
- открытие в левой панели директории с файлом.
- Редактирование файла.
- проверка результата.
- выход из фм.

Тест 9. Создание файла.
- запуск фм.
- открытие в левой панели директории для создания в ней файла.
- Создание и редактирование файла.
- проверка результата.
- выход из фм.


Тест 10. Удаление файла.
- запуск фм.
- открытие в левой панели директории с файлом.
- удаление файла.
- проверка результата.
- выход из фм.


Тест 11. Копирование файла.
- запуск фм.
- открытие в левой панели директории с файлом.
- открытие в правой панели директори для копирования.
- копирование файла.
- проверка результата.
- выход из фм.


Тест 12. Перенос файла.
- запуск фм.
- открытие в левой панели директории с файлом.
- открытие в правой панели директори для копирования.
- перенос файла.
- проверка результата.
- выход из фм.


2. Список задач для версии 1.0.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  Список задач далек от полноты и в дальнейшем будет доработан, на данный
момент более важными являются планы текущей и следующих итераций.

Общие:
	- публикация CVS
libregistry:
	на данный момент готова к выпуску с версией 1.0, хотя возможны
	риски доработки.
	
libabstractwidget:
	- написание интерфейсов основных виджетов
	- интеграция с libregistry
	- реализация основных виджетов
libeventqueue:
	- написание интерфейса библиотеки
	- реализация интерфейса
	- интеграция с onion.
onion:
	- командная строка
	- меню
	- файловые панели
	- диалог копирования
	- диалог удаления
	- редактирование файлов (внешний редактор)
	- просмотр файлов (внешний редактор)

3. План текущей итерации.
-=-=-=-=-=-=-=-=-=-=-=-=-
(2 units == week):
Начало второй итерации:		12 октября 2003
Окончание второй итерации:	1 ноября 2003

В конце второй итерации нужно будет добиться функциональности системы
реализующей следующий сценарий:

	1) запускаем onion
	2) нажимаем клавишу F10
	3) NcursesKeyboardGenerator генерирует событие KeyPressed для F10
	4) сообщение получает KeyMapTranslator
	5) KeyMapHandler генерирует событие OnionFM::Command для exit
	6) OnionFMHandler получает событие и выполняет OnionFM->exit()
	7) затем OnionFMHandler бросает исключение ExitEventException для
	   обрабоки клиентом класса Onion::EventControl
	8) main() перехватывает исключение ExitEventException и выходит
	   из фм.

Список необходимых задач для реализации сценария:
	1) разработка класса EventController (менеджер очереди событий).
	   расчетное время: 1 unit
	   
	2) разработка интерфейсов EventHandler (обработчик события) и
	   EventGenerator (генератор событий)
	   расчетное время: 1 unit
	   
	3) разработать код для EventController с помощью которого можно
	   регестрировать и удалять из контроллера обработчики и генераторы.
	   расчетное время: 1 unit
	   
	4) разработать KeyMapTranslator, который будет отображать нажатие
	   клавиш на события для OnionFMHandler
	   расчетное время: 1 unit
	   
	5) добавить команду OnioFM::exit(), и исключение ExitEventException.
	   расчетное время: 1 unit
	   
	Итого: общее расчетное время для второй итерации - около 2,5 недель
	       (1 unit == 1/2 недели)

4. План следующей итерации
-=-=-=-=--=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Во время следующей итерации нужно будет приблизиться к реализации следующего
сценария действий:
	1) запуск onion
	2) нажимаем F10
	3) появляется диалоговое окно с кнопками OK и CANCEL
	4) при нажатии OK, onion выходит.
	5) при нажатии CANCEL, пишет "я бы не выходил, но не вижу смысла 
	   этого не сделать" и выходит