Application. Экземпляр класса ApplicationParams

Чтобы плагин мог делать что-то полезное, в первую очередь нужно разобраться с классом outwiker.core.application.ApplicationParams. Этот класс представлен глобальной переменной Application в модуле outwiker.core.application. Переменная Application - это интерфейс для доступа ко всем основным частям OutWiker. Идеология плагинов для OutWiker диктуется динамической сутью языка Python, т.е. вы можете добраться практически до любой части основной программы, но за свои действия отвечаете сами - никаких “песочниц” для плагинов не предусмотрено.

По историческим причинам во многих частях программы доступ к переменной Application осуществляется следующим образом:

from outwiker.core.application import Application

...

# Использование переменной Application

Но лучше не использовать явный импорт переменной Application, а передавать ее в явном виде между классами, которые нуждаются в этой переменной. Например, экземпляр класса outwiker.core.application.ApplicationParams передается в конструктор класса outwiker.core.pluginbase.Plugin и доступен через поле self._application внутри классов, производных от outwiker.core.pluginbase.Plugin.

Основное назначение класса outwiker.core.application.ApplicationParams - предоставить доступ к основным элементам OutWiker - главному окну, actions (см. раздел Actions (не написано)), дереву заметок, списку загруженных плагинов и др., а также дать возможность подписаться на внутренние события OutWiker или добавить свое событие. О событиях см. раздел События.

Класс outwiker.core.application.ApplicationParams содержит следующие члены:

class outwiker.core.application.ApplicationParams
config

Экземпляр класса outwiker.core.config.Config, предназначенный для работы с настройками OutWiker.

recentWiki

Экземпляр класса outwiker.core.recent.RecentWiki, предназначенный для работы со списком последних открытых деревьев заметок.

actionController

Экземпляр класса outwiker.gui.actioncontroller.ActionController, предназначенный для работы с actions (см. раздел Actions (не написано)).

plugins

Экземпляр класса outwiker.core.pluginsloader.PluginsLoader, предназначенный для работы с плагинами.

pageUidDepot

Экземпляр класса outwiker.core.pageuiddepot.PageUidDepot, предназначенный для работы с уникальными идентификаторами страниц.

sharedData

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

wikiroot

Корень открытого в данный момент дерева заметок. Экземпляр класса outwiker.core.tree.WikiDocument или None, если в данный момент нет открытого дерева заметок.

selectedPage

Выбранная в данный момент страница. Экземпляр класса, производного от outwiker.core.tree.WikiPage или None, если в данный момент нет открытого дерева заметок или никакая страница не выбрана.

mainWindow

Ссылка на экземпляр класса outwiker.gui.mainwikdow.MainWindow главного окна программы.

customEvents

Экземпляр класса outwiker.core.event.CustomEvents, предназначенный для работы с нестандартными событиями (например, событиями, созданными плагинами).

onWikiOpen
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается после открытия дерева заметок. Обработчик должен принимать параметры:
  • root - экземпляр класса outwiker.core.tree.WikiDocument, который предназначен для работы с деревом заметок в целом. root может быть равен None.
onWikiClose
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается перед закрытием дерева заметок (например, перед открытием нового дерева заметок или в процессе закрытия программы). Обработчик должен принимать параметры:
  • root - экземпляр класса outwiker.core.tree.WikiDocument. root может быть равен None.
onPageUpdate
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается после изменения содержимого страницы. Обработчик должен принимать параметры:
  • sender - страница, которая изменилась (это может быть не обязательно текущая страница). Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • change - переменная, содержащая флаги, обозначающие, что именно изменилось. Возможные значения флагов описаны в src/outwiker/core/events.py:
    • PAGE_UPDATE_CONTENT - изменилось содержимое страницы;
    • PAGE_UPDATE_ICON - изменилась иконка страницы;
    • PAGE_UPDATE_TAGS - изменились теги страницы;
    • PAGE_UPDATE_ATTACHMENT - изменился список прикрепленных файлов;
    • PAGE_UPDATE_STYLE - изменился стиль страницы.
onPageCreate
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается после создания новой страницы. Обработчик должен принимать параметры:
  • sender - только что созданная страница. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
onTreeUpdate
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается после каких-либо изменений в дереве заметок. Обработчик должен принимать параметры:
  • sender - Страница, из-за которой было вызвано событие. Экземпляр класса outwiker.core.tree.WikiPage или производного от него. Может быть равен None.
onPageSelect
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается после изменения выбранной страницы. Обработчик должен принимать параметры:
  • sender - Новая выбранная страница. Экземпляр класса outwiker.core.tree.WikiPage или производного от него. Может быть равен None (например, если выбирается корень дерева, который не является полноценной страницей).
onAttachmentPaste
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается после нажатия кнопки “Вставить” на панели прикрепленных файлов. Обработчик должен отреагировать на то, что пользователь хочет вставить ссылки на прикрепленные файлы в текст страницы. Обработчик должен принимать параметры:
  • fnames - список имен выбранных прикрепленных файлов (только имена без полных путей).
onBookmarksChanged
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается после добавления страницы в закладки или удаления из них. Обработчик должен принимать параметры:
  • bookmark - экземпляр класса outwiker.core.bookmarks.Bookmarks.
onPageRemove
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается после удаления страницы из дерева заметок. Обработчик должен принимать параметры:
  • page - удаленная страница. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
onPageRename
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается после переименования страницы. Обработчик должен принимать параметры:
  • page - переименованная страница. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • oldSubpath - строка, содержащая старый относительный путь до переименованной страницы.
onStartTreeUpdate
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается, чтобы сообщить о том, что над деревом заметок будет производиться множество операций, которые будут вызывать события, которые, возможно, нет смысла обрабатывать по отдельности. В этом случае часто полезно временно отписаться от всех событий кроме onEndTreeUpdate (см. далее), по пришествию которого опять подписаться на интересующие события. Обработчик должен принимать параметры:
  • root - экземпляр класса outwiker.core.tree.WikiDocument. root может быть равен None.
onEndTreeUpdate
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается, чтобы сообщить о том, что над деревом заметок было произведено множество операций, которые могли вызывать события, которые, возможно, нет смысла обрабатывать по отдельности. Обычно событие onEndTreeUpdate вызывается после onStartTreeUpdate. Обработчик должен принимать параметры:
  • root - экземпляр класса outwiker.core.tree.WikiDocument. root может быть равен None.
onHtmlRenderingBegin
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается в начале процесса создания и отображения HTML, например, при переключении с викинотации на вкладку просмотра на викистраницах или с HTML-кода на вкладку просмотра на HTML-страницах. Полный порядок вызова событий показан на рисунке в разделе Порядок событий, в процессе отображения викистраниц. Обработчик должен принимать параметры:
  • page - Страница, для которой происходит рендеринг HTML (скорее всего это выбранная в данный момент страница). Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • htmlView - окно для отображения HTML.
onHtmlRenderingEnd
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается в конце процесса создания и отображения HTML, например, при переключении с викинотации на вкладку просмотра на викистраницах или с HTML-кода на вкладку просмотра на HTML-страницах. Полный порядок вызова событий показан на рисунке в разделе Порядок событий, в процессе отображения викистраниц. Обработчик должен принимать параметры:
  • page - Страница, для которой происходит рендеринг HTML (скорее всего это выбранная в данный момент страница). Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • htmlView - окно для отображения HTML.
onPageOrderChange
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается после изменения порядка следования страницы в дереве заметок. Обработчик должен принимать параметры:
  • page - страница, которую переместили выше или ниже. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
onForceSave

Событие. Экземпляр класса outwiker.core.event.Events. Можно вызвать, чтобы принудительно заставить сохранить текущую страницу. Обработчик не должен принимать никакие параметры.

onWikiParserPrepare
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается перед тем как запустится разбор викинотации. Событие предназначено для того, чтобы плагины могли дополнить викинотацию. Обработчик должен принимать параметры:
  • parser - парсер викинотации. Экземпляр класса outwiker.pages.wiki.parser.wikiparser.Parser.
onPreferencesDialogCreate
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается во время создания диалога настроек программы. Событие предназначено для того, чтобы плагины могли добавить новые разделы в диалог настроек. Обработчик должен принимать параметры:
  • dialog - диалог настроек. Экземпляр класса outwiker.gui.preferences.prefdialog.PrefDialog.
onPreferencesDialogClose
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается после закрытия диалога настроек программы. Событие предназначено для того, чтобы программа OutWiker или плагины могли применить новые настройки. Обработчик должен принимать параметры:
  • dialog - диалог настроек. Экземпляр класса outwiker.gui.preferences.prefdialog.PrefDialog.
onPageViewCreate
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается после создания интерфейса отображения страницы. Это событие можно использовать для настройки интерфейса программы под выбранный в данный момент тип страницы. Обработчик должен принимать параметры:
  • page - страница, для которой был создан интерфейс. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
onTreePopupMenu
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается, когда пользователь щелкает правой кнопкой на дереве заметок, но до того, как будет отображено всплывающее меню. Событие предназначено для того, чтобы плагин мог изменить всплывающее меню, например, добавить новые пункты. Обработчик должен принимать параметры:
  • menu - меню, которое будет показано пользователю. Экземпляр класса wx.Menu.
  • page - страница, на которую щелкнули правой кнопкой мыши в дереве заметок. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
onPreprocessing
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается перед началом преобразования текста страниц в HTML для их отображения. В данный момент используется для HTML-, вики- и Markdown-страниц. Это событие можно использовать для изменения содержимого страницы перед его преобразованием в HTML. Полный порядок вызова событий показан на рисунке в разделе Порядок событий, в процессе отображения викистраниц. Обработчик должен принимать параметры:
  • page - страница, которую в данный момент обрабатывают. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • params - экземпляр класса outwiker.core.events.PreprocessingParams.
onPostprocessing
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается после преобразования текста страниц в HTML для их отображения. В данный момент используется для HTML-, вики- и Markdown-страниц. Это событие можно использовать для изменения содержимого страницы после его парсинга, но до его отображения в виде HTML. Полный порядок вызова событий показан на рисунке в разделе Порядок событий, в процессе отображения викистраниц. Обработчик должен принимать параметры:
  • page - страница, которую в данный момент обрабатывают. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • params - экземпляр класса outwiker.core.events.PostprocessingParams.
onPreHtmlImproving
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается после преобразования текста страницы в HTML, но до “улучшения” полученного HTML-кода. Полный порядок вызова событий показан на рисунке в разделе Порядок событий, в процессе отображения викистраниц. Обработчик должен принимать параметры:
  • page - страница, которую в данный момент обрабатывают. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • params - экземпляр класса outwiker.core.events.PreHtmlImprovingParams.
onPrepareHtmlImprovers
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается после создания списка “улучшателей” HTML-кода, но до выбора конкретного “улучшателя” для работы. Улучшатели предназначены для преобразования HTML-кода (разделения текста на абзацы, форматирование кода и т.п.). Это событие можно использовать, чтобы добавить свой “улучшатель”. Полный порядок вызова событий показан на рисунке в разделе Порядок событий, в процессе отображения викистраниц. Обработчик должен принимать параметры:
  • factory - фабрика для создания “улучшателей”. Экземпляр класса outwiker.core.htmlimproverfactory.HtmlImproverFactory. С помощью этого класса можно добавлять новые “улучшатели”, которые должны быть производными класса outwiker.core.htmlimprover.HtmlImprover.
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается, когда пользователь проводит курсором мыши над ссылкой в окне просмотра страницы. В данный момент из-за особенности работы wxPython данное событие вызывается только в Windows. Обработчик должен принимать параметры:
  • page - текущая страница. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • params - экземпляр класса outwiker.core.events.HoverLinkParams.
onLinkClick
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается, когда пользователь щелкает на ссылку на странице в режиме просмотра. Обработчик должен принимать параметры:
  • page - текущая страница. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • params - экземпляр класса outwiker.core.events.LinkClickParams.
onPageDialogInit
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается, когда пользователь щелкает правой кнопкой мыши в текстовом редакторе, но до отображения всплывающего меню. Это событие можно использовать для изменения контекстного меню редактора. Обработчик должен принимать параметры:
  • page - текущая страница. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • params - экземпляр класса outwiker.core.events.EditorPopupMenuParams.
onPageDialogInit
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается, во время создания диалога для установки свойств страницы. Это событие можно использовать для того, чтобы добавить новый тип страниц в данный диалог. Обработчик должен принимать параметры:
  • page - страница, для которой вызывается диалог. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • params - экземпляр класса outwiker.core.events.PageDialogInitParams.
onPageDialogDestroy
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается, в процессе уничтожения диалога для установки свойств страницы. Обработчик должен принимать параметры:
  • page - страница, для которой вызывается диалог. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • params - экземпляр класса outwiker.core.events.PageDialogDestroyParams.
onPageDialogPageTypeChanged
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается, когда в диалоге изменения свойств страницы пользователь меняет тип страницы. Это событие можно использовать, например, для настройки внешнего вида диалога изменения свойств страницы в зависимости от выбранного типа страницы. Обработчик должен принимать параметры:
  • page - страница, для которой вызывается диалог. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • params - экземпляр класса outwiker.core.events.PageDialogPageTypeChangedParams.
onPageDialogPageTitleChanged
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается, когда в диалоге изменения свойств страницы пользователь меняет заголовок страницы. Обработчик должен принимать параметры:
  • page - страница, для которой вызывается диалог. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • params - экземпляр класса outwiker.core.events.PageDialogPageTitleChangedParams.
onPageDialogPageStyleChanged
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается, когда в диалоге изменения свойств страницы пользователь меняет стиль страницы. Обработчик должен принимать параметры:
  • page - страница, для которой вызывается диалог. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • params - экземпляр класса outwiker.core.events.PageDialogPageStyleChangedParams.
onPageDialogPageIconChanged
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается, когда в диалоге изменения свойств страницы пользователь меняет иконку страницы. Обработчик должен принимать параметры:
  • page - страница, для которой вызывается диалог. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • params - экземпляр класса outwiker.core.events.PageDialogPageIconChangedParams.
onPageDialogPageTagsChanged
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается, когда в диалоге изменения свойств страницы пользователь меняет теги страницы. Обработчик должен принимать параметры:
  • page - страница, для которой вызывается диалог. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • params - экземпляр класса outwiker.core.events.PageDialogPageTagsChangedParams.
onPageDialogPageFactoriesNeeded
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается во время создания диалога редактирования свойств страницы. Обработчик этого события может добавлять нестандартные типы фабрик страниц, чтобы пользователь мог выбрать новый тип страниц в соответствующем выпадающем списке. В основном событие нежно для плагинов, которые добавляют новые типы страниц. Обработчик должен принимать параметры:
  • page - страница, для которой вызывается диалог. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • params - экземпляр класса outwiker.core.events.PageDialogPageFactoriesNeededParams.
onEditorStyleNeeded
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается в процессе раскраски текста страницы в редакторе заметок. Обработчик должен принимать параметры:
  • page - страница, для которой вызывается диалог. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • params - экземпляр класса outwiker.core.events.EditorStyleNeededParams.
onPageUpdateNeeded
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается, чтобы принудительно обновить текущую страницу. Обработчик должен принимать параметры:
  • page - страница, для которой вызывается диалог. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • params - экземпляр класса outwiker.core.events.PageUpdateNeededParams.
onPreWikiOpen
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается до того, как будет открыто новое дерево заметок. Обработчик должен принимать параметры:
  • page - страница, для которой вызывается диалог. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • params - экземпляр класса outwiker.core.events.PreWikiOpenParams.
onPostWikiOpen
Событие. Экземпляр класса outwiker.core.event.Events. Вызывается после попытки открытия нового дерева заметок. Отличие от события onWikiOpen заключается в том, что onPostWikiOpen вызывается также после неудачных попыток открыть дерево заметок. Обработчик должен принимать параметры:
  • page - страница, для которой вызывается диалог. Экземпляр класса outwiker.core.tree.WikiPage или производного от него.
  • params - экземпляр класса outwiker.core.events.PostWikiOpenParams.

Порядок событий, в процессе отображения викистраниц

Предупреждение

Некоторые события могут быть еще не реализованы.

Порядок событий, в процессе отображения викистраниц