среда, 29 февраля 2012 г.

Идет полным ходом переработка QuadShade, так как утилита в текущем виде довольно убога. Первая версия была написана с использованием собственного редактора текста. Тут надо признаться, что начинал я его писать очень давно и амбиций тогда было очень много, не в пример знаниям и опыту. В результате чего редактор получился кастрированным даже по отношению к обычному TMemo, однако с раскраской синтаксиса. Поняв, что с этим работать тяжко, он был сменен на SynEdit, однако и он преподнес кучу сюрпризов. Начиная с того, что не работает делит, заканчивая тем, что и раскраску-то не совсем можно настроить как хочется. В итоге и он меня разочаровал.
Несколько дней назад я прошерстил интернет в поисках достойной замены, но для делфи так и не нашел подходящего компонента (что странно, согласитесь, для делфи компонент-то хватает). Результатом всех поисков и некоторого кол-ва раздумий стало решение написать свой компонент. Изобрести очередной велосипед. Чем я благополучно и занялся.
Надо отметить, что код в шейдерах, как правило, довольно маленький, поэтому такие особенности как схлопывающиеся куски кода я даже и не ставил себе в задачи. Прошло три, может четыре дня разработки, сейчас это выглядит так:
На скриншоте можно лицезреть следующие особенности:
  • Нумерация строк
  • Подсветка измененных строк (желтая) и сохраненных (зеленая)
  • Свои полосы прокрутки (увеличиваются в толщине, когда к ним подводишь курсор)
  • Изменяемый размер шрифта (на скришоте 11й)
  • Подсветка переменных с одинаковыми названиями
  • Подсветка текущей строки
  • Отчерк на 80символах
  • Автоподсказка по набираемым функциям и зарезервированным словам
  • Опциональная тень под шрифтом (на скриншоте включена)
А также то, что невозможно с него увидеть:
  • Корректная обработка табуляций (изменяемый размер)
  • Копирование, вырезание, вставка текста
  • Адекватная реакция на page up/down, home, end
  • Выделение текста как мышкой, так и с клавиатуры
  • Поддержка колесика мышки
Разумеется не могу не отметить, что писал его с нуля и за основу взял TCustomControl. 

5 комментариев:

  1. я надеюсь ты оставил глюк с ползуночком?:)
    ИМХО, подсказка должна быть прилеплена к набираемому тексту, а то она висит сейчас както нехорошо.
    А вообще конечно круто

    ОтветитьУдалить
  2. Черт побери, это красиво!

    ОтветитьУдалить
  3. Bloov, жди. Надеюсь, что скоро уже вывалю что-то работающее.

    Mefistofel, Надеюсь что не оставил :)

    Всем спасибо за теплые слова, мотивирует делать еще лучше.

    ОтветитьУдалить
  4. Да вид несомненно шикарный. Даже хочу уже во все редакторы текстовые такие цвета поставить. Надеюсь и работоспособность на высоте.

    ОтветитьУдалить