xcode
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Вот примерно третья часть требований к начальному этапу Все вроде просто, но мне очень важно разобраться с файловой организацией, иначе я не смогу сделать то что хочу так что для начала попробую сделать часть 4 - даже без html, на простых текстовых файлах. Реализация Проект разбивается на несколько этапов реализации Разработка ведется на C++ Этап 1 - многопользовательский аутлайнер Основные требования 1. Многопользовательская система; т.е. одновременно с базой могут работать несколько пользователей с разных компьютеров, объедиеннных в сеть; в качестве средства реализации для начала предполагатеся использовать систему контроля версий (например Subversion или распределенную VCS); в дальнейшем (на этапе >=4) возможно появление своих протоколов 2. Интерфейс 2.1. В основе организации данных лежит иерархическое дерево. Каждый элемент этого дерева имеет пользовательское имя (произвольное), внутреннее имя (уникальное в пределах текущего уровня текущего узла дерева), и - опционально - вложенное поддерево. Т.е. почти полная аналогия с файловой системой: внутреннее имя = имя файла/директории, пользовательское имя = содержимое файла, вложенное поддерево = список файлов внутри директории. 2.2. К каждому элементу дерева привязан некоторый файл - "страничка". Файлы могут быть разных типов. На первом этапе используется единственный тип - "html document". 2.4. Для страниц типа "html" предусмотрены команды РАЗМЕТКИ и ФОРМАТИРОВАНИЯ; при этом предусмотрено создание ИМЕНОВАННЫХ СТИЛЕЙ разметки; каждому стилю разметки можно сопоставить определенные настройки форматирования. Предусмотрено создание кнопок быстрой разметки (к каждой кнопке можно привязать свой стиль) и предполагается, что пользователи будут пользоваться именно разметкой, но предумсотрена также и панель непосредственного форматирования. Список возможностей разметки и форматирования: * h1, h2, h3, h4, h5 * number list, marked list * horizontal line * table * hyperlink * attach object * insert image * insert external object * bold, italic, underline * font, font size * text color, back text color, paragraph fill color * text alignment - by left, center, right, width * pre-formatted text * table formatting 2.5. Архитектура построена по принципу MDI, т.е. в одном окне можно открыть сразу несколько страниц; предусматривается общая панель закладок, с помощью которых можно переключаться между страницами; Изменения в странице могут сохраняться как автоматически при потере фокуса (как в аутланерах), так и командой Save (как в редакторах); 2.6. Предусматриваются разные способы открытия страницы: * как в аутлайнерах: загрузка страницы в текущее окно по одинарному щелчку на узле в дереве; загрузка страницы в новое окно по щелчку при удерживаемой клавише (Ctrl). * как в IDE: загрузка страницы в новое окно по двойному щелчку на узле в дереве; Предусматривается также откытие страницы во внешнем текстовом редакторе типа notepad; для этого используется контекстое меню узла дерева. Изменения, внсененные во внешнем редакторе, вносятся в отображение текущей страницы автоматически по получении фокуса. 3. Переносимость. 3.1. Система не требует инсталляции, не использует реестр для хранения каких-либо данных; все необходимое для ее функционирования включается в один exe-файл; все пользовательские настройки хранятся в xml-файле, который находится в той же папке что и exe. 3.2. Все плагины хранятся в подпапках папки plugins, расположенной в той же диреткории что и exe; таким образом, каждый плагин имеет собственную папку, в которой размещены все необходимые для него файлы. 4. Файловая организация 4. Файловая организация 4.1. Каждая страничка хранится в виде отдельного файла (html, в дальнейшем - другие форматы); 4.2. Каждый узел дерева хранится в отдельном файле xml; за счет этого появляется возможность открывать части базы как самостоятельные базы. 4.3. Принцип раздельного хранения файлов выбран для обеспечения работы системы контроля версий: скорее всего, разные пользователи будут редактировать разные страницы / узлы дерева; даже если они редактируют одну страницу, в большинстве случаев формат html и xml позволит произвести автоматическое слияние; в случае конфликта формат html и xml лучше всего ориентирован на ручное разрешение конфликтов. 4.4. Нет жесткой привязки базы к файловой системе; тем ни менее, есть настраиваемые стратегии размещения файлов базы в файловой системе базы. Т.е. возможно разместить, например, все файлы базы в одной папке без вложенности, но по умолчанию будет иерархическая стратегия размещения. Это связано с одним из основных назначений системы - интеграции базы знаний с исходниками больших программных проектов, у которых уже есть сформировашаяся стурктура файлов и папок. При создании новой странички пользователь должен иметь возможность выбрать папку размещения этой странички, но должна быть также и стратегия по умочанию (создание странички по умолчанию = одно нажатие клавиши!) |