Разбор исходников Outwiker. Структура папок | jenyay.net

Разбор исходников Outwiker. Структура папок

Оглавление

Введение

Эта статья открывает серию публикаций, посвященную внутреннему устройству программы OutWiker. Если вы никогда не слышали об этой программе, то скажу, что она предназначена для хранения заметок в виде иерархической структуры.

Эту же серию можно рассматривать и как официальную документацию по исходникам и API программы. Эти статьи помогут вам начать писать плагины для OutWiker, да и просто посмотреть, как работают чужие программы всегда полезно. Сразу скажу, что некоторые архитектурные решения, скажем так, не идеальные, и в будущем они могут меняться, хотя я стараюсь сохранять совместимость со всеми написанными ранее плагинами, в чем сильно помогают unit-тесты. Конечно, по мере изменения API я буду обновлять и эти статьи, но если вы увидели какую-то неточность или несоответствие, пишите мне в комментариях или на почту - исправлю.

Данное описание относится к OutWiker версии 1.8 (на данный момент нестабильной бета-версией).

Где взять исходники

OutWiker является свободно распространяемой программой с открытым исходным кодом, который можно скачать с сайта github. Можно, конечно, скачать исходники в виде архива, но лучше клонировать репозиторий с помощью программы git, в этом случае в будущем вы сможете легко обновить скачанные исходники до самой последней версии.

Для того, чтобы получить исходники OutWiker из репозитория, выполните следующую команду:

git clone https://github.com/Jenyay/outwiker.git

Ветка master содержит текущую версию исходников. Исходники стабильной версии содержатся в ветке stable, для их получения нужно выполнить следующие команды:

git clone https://github.com/Jenyay/outwiker.git
cd outwiker
git checkout stable

Но все же рекомендуется работать сразу с веткой master, поскольку в ней могут произойти изменения в интерфейсах классов по сравнению с веткой stable.

На чем написан OutWiker

OutWiker написан на языке Python версии 2.7. В качестве библиотеки для создания интерфейса используется wxPython версии 2.8. Незадолго до начала написания этих строк вышел wxPython версии 3.0, Outwiker в целом работает и с этой версией, но пока еще есть некоторые неисправленные шероховатости в интерфейсе, поэтому основной считается версия 2.8, к тому же версия wxPython 3.0 на данный момент еще не содержится в официальном репозитории Ubuntu. В будущем планируется переход полностью на wxPython 3.0 (как только он станет доступен в Ubuntu).

Для встраивания окна Internet Explorer под Windows используется библиотека comtypes, которая позволяет использовать COM-объекты из кода Python.

Для сборки exe-шника под Windows используется библиотека cx_Freeze.

Также внутри OutWiker используется библиотека pyparsing, позволяющая проводить синтаксический разбор грамматик. В данном случае она используется для разбора викисинтаксиса для викистраниц. Но эту библиотеку скачивать отдельно не надо, ее исходники лежат в исходниках OutWiker.

Структура папок

Рассмотрим теперь структуру папок исходников OutWiker.

Перечислим папки и файлы в корне исходников.

.git. На эту папку не обращаем внимания, она нужна для работы с git. Если вы пользовались этой системой контроля версий, то уже знаете, что это такое.

build. В эту папку складываются скомпилированные версии программы. Это относится и к Windows-версии, и к deb-пакетам для Debian / Ubuntu Linux.

debian. Эта папка содержит файлы, необходимые для сборки deb-пакетов под Debian / Ubuntu Linux.

doc. В этой папке лежат файлы, используемые в документации - файл сборки документации с помощью Doxygen и картинки со скриншотами.

images. Эта папка содержит иконки программы. Используется для сборки deb-пакета под Debian / Ubuntu Linux.

man. Эта папка содержит man-файлы документации под Linux.

plugins. Эта папка содержит исходники всех плагинов, в том числе и тех, которые используются для тестирования.

profiles. Эта папка содержит файлы, используемые для измерения скорости работы программы (профилирования).

test. Эта папка содержит файлы, используемые при тестировании. Здесь содержатся различные картинки, папки с заметками, в том числе и с ошибками.

src. Это самая важная папка, именно в ней содержатся основные исходники, именно ей мы и будем заниматься в первую очередь.

Также в корне исходников содержатся следующие файлы:

.gitignore. Файл, используемый git, в котором перечислены, файлы и папки, которые не должны попадать в репозиторий.

Makefile. Файл, используемый для сборки deb-пакетов.

outwiker. Скрипт, используемый для запуска OutWiker под Linux.

outwiker_setup.iss. Файл для сборки инсталлятора под Windows. Инсталлятор собирается с помощью Inno Setup.

README.md. файл описания программы для github.

copyright, README и outwiker.desktop. используются для сборки deb-пакета под Debian / Ubuntu Linux.

fabfile.py. Файл, предназначенный для сборки дистрибутивов под Windows и deb-пакетов под Ubuntu. Файл представляет собой скипт для библиотеки Fabric.

Структура папки src

Теперь заглянем в самую главную папку исходиков - src.

help. Папка содержит справку по программе на данный момент на двух языках - на русском и на английском.

images. Папка содержит все картинки, которые встречаются в программе (иконки программы и картинки на кнопках). Внутри этой папки есть папка iconset, в которой содержатся все иконки, предлагаемые для страниц заметок в соответствующем диалоге.

Если вы захотите расширить набор иконок, предлагаемый по умолчанию, то достаточно кинуть новые картинки в папку images/iconset. Все иконки взяты из свободно распространяемых коллекций, взятых с сайтов http://www.famfamfam.com и http://p.yusukekamiyamane.com/.

locale. Содержит локализации программы OutWiker. Сюда не входят локализации плагинов, они будут располагаться в папке каждого плагина. Для локализации используется технология gettext.

outwiker. Самая главная папка с исходниками. Именно там содержатся основные классы программы. О ее содержимом мы поговорим более подробно чуть позже.

profiles. Опять папка для профилирования. Но только если на уровень выше папка profiles содержала данные, по обработке которых измерялась скорость, то данная папка содержит вспомогательный скрипт для измерения скорости википарсера.

styles. Содержит стили, которые можно установить для страниц.

test. Содержит скрипты с unit-тестами.

tools. Эта папка предназначена для хранения сторонних приложений, которые используются OutWiker'ом под Windows. На данный момент содержит только mimetex.exe, а в будущем я собираюсь и от него избавиться, перекинув редактор формул в отдельный плагин.

В папке src также содержатся следующие файлы:

runoutwiker.py. Главный запускаемый файл OutWiker.

tests.py. Скрипт для запуска unit-тестов.

setup_win.py. Скрипт для сборки exe-шника под Windows с помощью cx_Freeze.

setup_tests.py. Собирает unit-тесты в exe-шник (этот режим тестирования особо не используется).

profile.py. Используется для запуска профайлера.

Структура папки src/outwiker

Папка src/outwiker представляет собой Python-пакет (содержит файл __init__.py), в который вложены следующие пакеты:

core. Базовые элементы OutWiker. Здесь содержатся классы, по возможности отделенные от интерфейса программы, например, классы, отвечающие за работу с деревом заметок (файл tree.py), классы для чтения файлов настроек (config.py), классы для работы с плагинами (pluginsloader.py и pluginbase.py) и другие.

gui. В этой папке расположены классы, отвечающие за интерфейс программы. Например, класс главного окна содержится в файле mainwindow.py.

pages. Эта папка содержит пакеты, отвечающие за создание страниц различных типов. В ней содержатся пакеты text для работы с простыми текстовыми страницами, html для работы с HTML-страницами, wiki для работы с викистраницами и search для работы со страницей глобального поиска.

actions. Эта папка содержит так называемые "actions" - классы, которые привязываются к элементам меню или к кнопкам на панелях инструментов. Все действия, производимые через интерфейс программы работают через actions, что позволяет настраивать горячие клавиши.

libs. Эта папка содержит сторонние библиотеки. В данный момент там содержится единственная библиотека - pyparsing, используемая для разбора викинотации.

Теперь вы ознакомились с общей структурой исходников Outwiker, в следующих статьях мы начнем ковыряться в них более подробно.

К оглавлению раздела

Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
5 stars

Рейтинг 4.6/5. Всего 11 голос(а, ов)




Подписаться на комментарии
Автор:
Тема:
 Ваш комментарий
 
 
Введите код 952