Читаем Написание скриптов для Blender 2.49 полностью

      return

Теперь, когда мы уверены, что регулярное выражение - верное, мы проходим по всем строкам текстового буфера, начиная со строки, на которой находится курсор (выделено). С каждой строкой мы сопоставляем наше скомпилированное регулярное выражение (или с частью строки после курсора, если это первая строка).

   first = True

   for string in txt.asLines(row):

      if first :

         string = string[col:]

      mo = re.search(po,string)

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

Если ничего не остается для перебора, мы сигнализируем пользователю, что мы не нашли ни одного сопоставления. В любом случае, мы сохраняем регулярное выражение в реестре для использования заново:

      if mo != None :

         i = mo.start()

         l = mo.end()-i

         if first :

            i += col

         txt.setCursorPos(row,i)

         txt.setSelectPos(row,i+l)

         break

      row += 1

      first = False

   else :

      popup('No match')

   Registry.SetKey(keyname,{'regex':pattern})

if __name__ == '__main__':

   run()

Полный код доступен как regex.py в файле regex.blend, но может быть размещён в каталоге скриптов Блендер с подходящим именем, как например, textplugin_regex.py.

<p>Расширение редактора - взаимодействие с Subversion</p>

При активной разработке скриптов может оказаться сложно следить за изменениями или возвращаться к предыдущим версиям. Это не уникально для написания скриптов Питона в Блендере, поэтому системы управления версиями развиваются уже много лет. Одна из хорошо известных, и широко используемых - это Subversion (http://subversion.tigris.org). В этом разделе мы показываем, как может быть дополнен редактор, чтобы отправлять или обновлять текстовые файлы из хранилища.

Взаимодействие с хранилищем Subversion не предусмотрено встроенными модулями Питона, так что мы должны получить эту библиотеку где-нибудь   еще.   Секция загрузок   сайта http://pysvn.tigris.org содержит и исходные коды и бинарные дистрибутивы для многих платформ. Не забудьте получить правильную версию, так как поддерживаемая версия Subversion и версия Питона могут отличаться. Скрипт, который мы разрабатывали здесь, протестирован на Subversion 1.6.x и Питоне 2.6.x, но должен также работать с более ранними версиями Subversion.

Мы осуществим функциональность отправления (commit) текстового файла в хранилище и обновления (update) файла (то есть, получение самой последней исправленной версии из хранилища). Если мы пытаемся отправить файл, который пока не является частью хранилища, мы добавляем его, но мы не будем разрабатывать инструменты для создания хранилища или проверки рабочей копии. Такие инструменты, как, например, TortoiseSVN в Windows (http://tortoisesvn.tigris.org/) или множество инструментов для открытых платформ значительно лучше это делают. Мы просто принимаем подтверждённый (checked-out) рабочий каталог, где мы храним наши текстовые файлы Блендера. (Этот рабочий каталог может отличаться от вашего каталога проекта Блендера.)

Отправка (commit) файла в хранилище

Отправка текстового буфера в хранилище - процесс из двух шагов. Сначала мы должны сохранить содержимое текстового буфера в файл, и затем мы отправляем этот файл в хранилище. Мы должны проверить, имеет ли текстовый блок связанное с ним имя файла, и предложить пользователю сначала сохранить файл, если такого файла пока ещё нет. Пользователь должен сохранить файл в подтверждённый каталог для того, чтобы отправить файл в хранилище.

Так же как и расширение, позволившее нам производить поиск с помощью регулярных выражений, этот скрипт начинается с подходящего заголовка, чтобы идентифицировать его как плугин текстового редактора, и чтобы назначить клавиатурное сокращение. Мы определяем мнемосхему Ctrl + Alt + C для отправки (выделено), так же как мы определим Ctrl + Alt + U для обновления в своем сопровождающем скрипте. Мы также импортируем необходимые модули, особенно модуль pysvn:

#!BPY

"""

Name: 'SVNCommit'

Blender: 249

Group: 'TextPlugin'

Shortcut: 'Ctrl+Alt+C'

Tooltip: 'Commit current textbuffer to svn'

"""

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных