OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 03 Декабрь, 2021 15:40

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: Воскресенье, 29 Август, 2021 20:10 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3168
Так как цвет часто используется для разных пометок, то - это реальный инструмент.

В самом Блэкбоксе нет команды для перекраски всех букв из одного цвета в другой.

А у меня взникла такая производственная необходимость при работе с исходниками.

Написал небольшой модуль из одной процедуры для перекраски и решил поделиться.

Код:
MODULE ToolRecolor;

   IMPORT DevCommanders, TextMappers, TextModels, Ports, Stores, Models;

   PROCEDURE Recolor*;
      VAR s: TextMappers.Scanner; ch: CHAR; script: Stores.Operation;
         colorToReplace, newColor: Ports.Color;
   BEGIN
      s.ConnectTo(DevCommanders.par.text);
      s.SetPos(DevCommanders.par.beg);
      s.rider.ReadChar(ch);
      IF ch = 0DX THEN RETURN END;
      WHILE ~ s.rider.eot & (ch = " ") DO
         s.rider.ReadChar(ch);
         IF ch = 0DX THEN RETURN END;
      END;
      colorToReplace := s.rider.attr.color;
      WHILE ~ s.rider.eot & (ch # " ") & (ch # 0DX) DO
         s.rider.ReadChar(ch);
         IF ch = 0DX THEN RETURN END;
      END;
      WHILE ~ s.rider.eot & (ch = " ") & (ch # 0DX) DO
         s.rider.ReadChar(ch);
         IF ch = 0DX THEN RETURN END;
      END;
      newColor := s.rider.attr.color;
      WHILE ~ s.rider.eot & (ch # 0DX) DO
         s.rider.ReadChar(ch);
      END;
      
      Models.BeginScript(DevCommanders.par.text, "Reaplace color", script);
      WHILE ~ s.rider.eot DO
         s.rider.ReadChar(ch);
         IF (s.rider # NIL) & (s.rider.attr # NIL) THEN
            IF s.rider.attr.color = colorToReplace THEN
               DevCommanders.par.text.SetAttr(s.rider.Pos()-1, s.rider.Pos(),
                  TextModels.NewColor(s.rider.attr, newColor))
            END
         END
      END;
      Models.EndScript(DevCommanders.par.text, script)
      
   END Recolor;

END ToolRecolor.



Цвета кодируются цветом слов после коммандера в одной строке, и команда применяется к тексту после этой строки.

Вложение:
Снимок экрана от 2021-08-30 00-09-37.png
Снимок экрана от 2021-08-30 00-09-37.png [ 2.5 КБ | Просмотров: 1597 ]


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2021, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB