Как создавался Ribbon XML Editor

Начало

Весной 2007 года я поставил себе только что вышедший в то время Microsoft Office 2007, и был глубоко разочарован его новым интерфейсом. На панелях, отжирающих у документа отнюдь не маленький кусок вертикального пространства, присутствовали кнопки, которые я фактически не использовал, тогда как чтобы добраться до действительно нужных мне функций, приходилось изрядно повозиться.

Конечно же, я полез в настройки интерфейса, чтобы настроить его под себя, как это делал с прекрасно зарекомендовавшими себя панелями инструментов. Каково же было моё изумление, когда я увидел, что новый интерфейс практически не поддаётся никакой настройке!

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

Об XML я имел довольно отдалённое представление, но поскольку альтернативы у меня всё равно не было, я принялся скрупулёзно изучать предмет. Изучение материалов по теме привело к тому, что я добился-таки изменения ленты, добавив на неё свою вкладку с кнопкой путём создания необходимого для этого xml-файла в блокноте. Но писать руками малознакомые конструкции было довольно утомительно, и я понял, что без автоматизации этого процесса создание полноценной вкладки затянется очень надолго.

Вот тогда и пришла идея создания простейшего редактора, в котором xml-конструкции набирались бы не руками, а путём нажатия соответствующих кнопок. Так в мае 2007 года появилась первая версия редактора RibonXMLEditor, которую я тут же выложил в Интернет на всеобщее обозрение.

Это был первый и в то время единственный редактор подобного рода. Хотя, справедливости ради стоит отметить, что первым подобием такого редактора была всё же некая утилита от Microsoft — Custom UI Editor for Microsoft Office, но она была сделана лишь в качестве примера работы с новым интерфейсом и не получила дальнейшего развития. Кроме того, в ней отсутствовала как раз-таки автоматизация вставки xml-конструкций и были проблемы с отображением кириллицы, которая могла использоваться как в комментариях, так и в значениях параметров некоторых xml-тегов.

С помощью Ribbon XML Editor я довольно быстро сконструировал собственную вкладку, где расположил только используемые мной кнопки, и написал трилогию по теме, разместив её на своём сайте (http://novikovmaxim.narod.ru/statyi/ur_progr/word2007/word07_1.htm). На этом и успокоился.

Продолжение

Первое время было всё тихо, но начиная с 2008 года я начал получать отзывы о своей программе. Сообщали и об ошибках, и к концу 2008 года вышла новая версия редактора с исправлениями. В течение следующего, 2009 года, вышло ещё несколько минорных версий. Программа стремительно набирала популярность.

К концу 2009 года вышло существенное обновление программы, и она получила номер 2.0. С этого момента началась активная фаза развития программы и насыщение её функционалом, необходимым уже для профессионального её использования. Буквально через месяц, в январе 2010 года, вышло очередное существенное обновление программы — в неё была внедрена поддержка вышедшего недавно Microsoft Office 2010, и версия программы получила номер 3.0.

В течение 2012 года программа получила ещё несколько минорных обновлений. Надо заметить, что только ради этой программы я не удалял с компьютера старенькую среду разработки приложений — Delphi 7. Дело в том, что следующие несколько версий Delphi были не очень удачными — среда разработки переживала не лучшие времена. Затем Delphi была продана другой компании, что дало новый импульс её развитию, и новая её версия перешла на Unicode. Но это повлекло за собой существенные изменения внутри самого языка, и важные сторонние компоненты, которые я использовал в своей программе, просто перестали поддерживаться. Это был ещё один, хотя и неизбежный, удар по Delphi и по написанным на ней проектам.

Несколько раз я пытался перейти на новые компоненты, но это не удавалось. То один компонент глючил, то другой компонент никак не подключался. А копаться в старой версии Delphi уже не хотелось, поскольку рядом уже стояла новая версия среды, которая позволяла многие вещи делать быстрее и проще. Судьба дальнейшего развития Ribbon XML Editor висела на волоске.

Переход на новый уровень

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

В то же время у меня свербело перевести проект под новую версию Delphi, и осенью 2013 года я всё же предпринял ещё одну попытку это сделать. Основной задачей было прикрутить к Delphi XE5 компонент редактора Sсintilla. К счастью, я нашёл для него новую обёртку для Delphi — DScintilla и, наконец, компонент удалось прикрутить! Это означало только одно — новой версии быть!

Замену другому стороннему компоненту — архиватору я нашёл довольно быстро. Но все эти новые компоненты имели совсем другой интерфейс взаимодействия с окружающим программным кодом. Архиватор вообще работал иначе. Да и обёртка DScintilla оказалась просто обёрткой, без дополнительного функционала, который был у старого компонента. Поэтому я понял, что проще будет переписать весь проект с нуля, тем более, что старый код всё равно был довольно запутан и потенциально мог вызвать множественные ошибки в будущем.

Я принялся за дело и, наконец, в начале февраля 2014 года новая версия увидела свет и получила номер 4.0. Пожалуй, это была самая крупная доработка программы, хотя для пользователя это был скорее качественный, а не количественный апгрейд. В настройках появились стили подсветки синтаксиса, в редакторе — подсветка парных тегов, справка стала гипертекстовой. Кнопки элементов ленточного интерфейса в окнах редакторов теперь были сгруппированы более наглядно. Фактически же, если не считать абсолютно нового кода всего приложения, было реализовано более 30 функциональных изменений, что является абсолютным рекордом для программы.

Вскоре появилась версия 4.1 c некоторыми исправлениями допущенных погрешностей, а почти спустя год, в январе 2015 — версия 4.2, включившая в себя помимо ряда исправлений, накопившихся за год, несколько полезных функций, в числе которых возможность экспорта xml-макета интерфейса в файл, читаемый настройками ленты, начиная с MS Office 2010, а также импорта подобного файла, создаваемого настройками ленты в самом офисе.

Ввод контекстно-чувствительного автодополнения

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

И вот, наконец, после полутора месяцев упорной работы вышла версия 5.0, которая стала поддерживать столь долгожданную функцию! Кроме того, в программу была добавлена галерея встроенных в офис иконок, содержащая несколько тысяч изображений. Также была существенно доработана справка, включившая много дополнительной справочной информации. Программа очередной раз сделала хороший рывок вперёд.

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

Рюшечки и плюшечки

В мае 2016 года вышло очередное крупное обновление программы. В новой версии 6.0 появилась поддержка очередной версии офиса (2016), а также доработана тематизация интерфейса программы. Появилась возможность выбора одной из сотни внешних тем. Также в этой версии было произведено ещё около десятка различных доработок и улучшений.

Поддержка Access

В феврале 2017 года вышла очередная версия 6.1, основным изменением в которой стала осторожная попытка частичной поддержки Access (автодополнение, справка и т.п.). Файлы баз данных эта версия самостоятельно ещё не открывала.

В марте 2017 года вышла версия 7.0, в которой была, наконец, реализована полная поддержка Access. Программа научилась работать с файлами баз данных.

В апреле 2017 года вышло очередное обновление с многочисленными доработками и улучшениями.

Так что на сегодняшний день можно констатировать, что старейший низкоуровневый xml-редактор интерфейса MS Office — Ribbon XML Editor — продолжает успешно развиваться и совершенствоваться. Скачать его последнюю версию можно с официальной страницы программы:

http://novikov.gq/products/ribbonxmleditor/ribbonxmleditor.html