Текущий раздел:

Описания RDS

Описание пользователя

Глава 2. Интерфейс пользователя

§2.16. Создание и редактирование библиотек и вкладок панели блоков

§2.16.5. Редактирование библиотек без использования RDS

# Описание пользователя

## Глава 2. Интерфейс пользователя

### §2.16. Создание и редактирование библиотек и вкладок панели блоков

#### §2.16.5. Редактирование библиотек без использования RDS

Описывается редактирование библиотек и панели блоков RDS средствами Windows.

Рис. 273. Одна и та же папка-вкладка панели блоков
в окне библиотеки RDS (вверху)
и в «проводнике» Windows (внизу)

Как уже было указано выше, и библиотеки, и вкладки панели блоков – это просто папки с файлами в специальных папках RDS: папке библиотеки и папке панели блоков. Размещение этих папок можно узнать в настройках RDS. По умолчанию папка библиотеки называется «Library», папка панели блоков – «Panel». При желании, удалять блоки из библиотеки или с панели и перемещать их из одной библиотеки в другую можно и без участия RDS средствами любого файлового менеджера – например, «проводника» Windows (рис. 273). Добавлять новые блоки в библиотеку тоже можно через файловый менеджер, но при этом все равно придется сначала сохранить блок из схемы в файл на диске (для этого нужно выделить его в схеме, выбрать пункт главного меню «редактирование | сохранить блок» и указать имя файла), а затем переместить этот файл в нужную папку библиотеки и создать для него файлы со значком и всплывающей подсказкой.

Имя вложенной папки внутри папки библиотеки или панели блоков в большинстве случаев будет являться именем этой библиотеки или вкладки соответственно – если, например, создать внутри папки панели блоков папку с названием «Анимация», пустая вкладка с названием «Анимация» появится на панели блоков при следующем запуске RDS. Единственное исключение из этого правила – задание независимого от папки имени вкладки панели блоков. Внутри папки каждому библиотечному блоку соответствует один или несколько файлов: у всех этих файлов одно и то же имя (точнее, часть имени до точки, отделяющей в имени файла собственно имя от расширения), но разные расширения.

Сам файл описания блока имеет либо расширение «.blk», если это простой блок, внешний вход, внешний выход или ввод шины, либо расширение «.rds», если это подсистема, сохраненная как единый блок, или полная схема, либо «.pth», если это файл, содержащий ссылку на файл блока, находящийся где-то в другом месте. Именно из этого файла будут загружаться параметры блока при его вставке из библиотеки в схему. На рис. 273 внизу файл, из которого будет загружаться блок с анимированным изображением манипулятора (см. пример в §2.16.2), называется «Hand.blk» – это простой блок. Чаще всего в библиотеки добавляют именно простые блоки, поскольку многие из них достаточно универсальны, чтобы использоваться в разных схемах. Внешние входы, выходы и вводы шин обычно не имеют ни моделей, ни каких-либо специальных параметров, поэтому редко помещаются в библиотеку – их проще создать в схеме в нужном месте, чем искать на панели блоков. Тем не менее, если пользователя не устраивает стандартный внешний вид этих блоков в RDS, он может, например, создать для них векторные картинки и поместить эти блоки в библиотеку, чтобы не пришлось задавать одни и те же картинки для всех создаваемых входов, выходов или вводов шин. Подсистемы и сами схемы в RDS являются блоками сложной структуры, и их тоже можно поместить в библиотеку, если такую подсистему предполагается использовать в качестве сложного блока в других схемах.

Имя, которое получает библиотечный блок при вставке в схему, определяется именно именем файла, в котором он находится в папке библиотеки, а не именем, которое он имел в момент сохранения – этим вставка блока из библиотеки отличается от вставки блока при помощи пункта меню «редактирование | создать | загрузить блок». Если вставить в схему блок манипулятора из библиотеки или с панели блоков, он получит имя «Hand1»: к имени файла («Hand») будет прибавлена цифра, обеспечивающая уникальность имени блока в подсистеме. Если вставить в ту же подсистему второй такой блок, он получит имя «Hand2», и т.д. Если же вставить в подсистему этот же самый блок, вызвав пункт меню «редактирование | создать | загрузить блок» и выбрав в диалоге открытия файл «Hand.blk» из библиотеки, блок получит имя «Block1», поскольку именно так он назывался в подсистеме в тот момент, когда его оттуда записали в библиотеку. Разумеется, если на момент загрузки блока в подсистеме уже есть блок с именем «Block1», цифра в конце имени нового блока будет автоматически увеличена, но началом имени все равно останется слово «Block», а не имя файла «Hand». Таким образом, чтобы изменить имя, которое библиотечный блок получает при вставке в схему, достаточно просто переименовать его файл. При этом необходимо также переименовать все связанные с ним вспомогательные файлы, описанные ниже.

Кроме самого файла с описанием блока, в папке библиотеки могут находиться дополнительные файлы с описанием значков этого блока, его всплывающей подсказки, а также файл-признак стандартного блока. Имена этих вспомогательных файлов отличаются от имени основного только расширением: на рис. 273 внизу вместе с файлом «Hand.blk» блок описывают файлы «Hand.b16» (мелкий значок) и «Hand.txt» (текст всплывающей подсказки).

Растровые изображения, используемые в качестве значка блока на вкладке панели или в библиотеке, хранятся в файлах с расширениями «.bmp», «.ico», «.i16», «.i32», «.b16», «.b32». В файлах «.bmp», «.b16» и «.b32» находятся изображения в стандартном растровом формате Windows (bitmap): в «.b16» – 16×16 точек (мелкие значки), в «.b32» – 32×32 (крупные), в «.bmp» – любого размера. Левая нижняя точка такого изображения в RDS считается прозрачной, поэтому при его выводе все точки того же цвета будут заменены на цвет фона. В файлах «.ico», «.i16» и «.i32» содержатся иконки в стандартном формате Windows – произвольного размера, 16×16 и 32×32 точки соответственно. Формат иконки включает в себя маску прозрачности, поэтому цвет левой нижней точки в ней не анализируется и остается таким, каким он был задан при создании изображения. В RDS нет встроенного редактора растровых изображений, поэтому все значки необходимо создавать во внешних редакторах. Растровые изображения в формате «.bmp» можно создавать и редактировать во встроенном в Windows редакторе «Paint», а файлы с расширениями «.b16» и «.b32» можно получить из «.bmp» простым переименованием (формат у них одинаковый): например, чтобы создать мелкий значок «Hand.b16», можно создать в редакторе «Paint» растровое изображение размером 16×16 точек, сохранить его в файл «Hand.bmp», а затем переименовать этот файл, заменив расширение на «.b16». Если у блока не будет крупного значка, можно и не переименовывать файл – файлы с расширением «.bmp», которое растровые рисунки получают по умолчанию, тоже опознаются RDS как файлы значков. Редактор иконок (формат «.ico») в состав стандартных программ Windows не входит, но такие редакторы используются во многих средах разработки и найти их не так уж сложно. Файлы с расширениями «.i16» и «.i32» можно получить из «.ico» простым переименованием – формат у них одинаковый.

Значки размером 16×16 используются на панели блоков и в библиотеке в стилях «мелкие значки» и «список», 32×32 – только в библиотеке и только в режиме «крупные значки». Если RDS не может найти среди этих файлов значок нужного размера, значок будет автоматически сформирован путем сжатия или растягивания найденного изображения, однако, качество изображения при этом, как правило, ухудшается. Для блока в библиотеке или на панели может быть задан любой набор из указанных файлов, и RDS будет искать среди них подходящий. При поиске мелкого значка файлы просматриваются в следующем порядке: «.i16» → «.b16» → «.ico» → «.bmp», при поиске крупного – «.i32» → «.b32» → «.ico» → «.bmp». Таким образом, если, например, в папке есть файл с расширением «.i16», RDS не будет обращаться к файлам «.b16», «.ico» и «.bmp» при поиске мелкого значка. Папки библиотеки блоков тоже могут иметь такие файлы со значками – в этом случае имя файла должно совпадать с именем папки библиотеки (например, значок для библиотеки «Library1» должен называться «Library1.bmp», «Library1.ico» и т.п.). Вкладки панели блоков значков иметь не могут (точнее, файлы значков для вкладок игнорируются RDS).

Текст всплывающей подсказки к блоку хранится в файле с расширением «.txt», он может быть создан при помощи любого текстового редактора – например, входящим в состав Windows редактором «Блокнот». Подсказка может содержать несколько строчек, текст должен иметь кодировку UTF8 и не должен иметь какого-либо форматирования. Этот текст будет появляться во всплывающем окне при наведении курсора мыши на значок блока в библиотеке или на его кнопку на панели блоков.

В этом же тексте на отдельной строке указывается файл и тема (при наличии) справки к блоку, если она есть. Такая строка не включается во всплывающую подсказку и имеет следующий вид:

      $HELP=относительный_путь_к_файлу_справки|тема

Она начинается с символов «$HELP=» (начальные пробелы недопустимы), за которыми следует либо имя файла справки для этого блока (путь указывается относительно стандартной папки документации RDS), либо имя файла справки, знак вертикальной черты («|»), и имя темы. Пробелы до и после вертикальной черты недопустимы. Имя темы – это либо имя «якоря» в файле справки, если этот файл имеет формат html, либо имя темы в специальном файле справки RDS («.ui»), формат котрого описан в §2.16.2.

В файле «.txt» отдельной строкой может указываться и имя схемы-примера для блока, если такая схема существует. Эта строка похожа на строку указания справки, только вместо «$HELP=» она начинается с «$EXAMPLE=» и имеет вид

      $EXAMPLE=относительный_путь_к_файлу_примера|параметры

или

      $EXAMPLE=относительный_путь_к_файлу_UI|тема

Путь к файлу указывается относительно стандартной папки примеров RDS. В качестве файла может указываться либо сам файл схемы примера (после вертикальной черты можно добавить дополнительные параметры запуска «rds.exe»), либо файл с расширением «.ui», аналогичный по формату файлам справки RDS (при этом после вертикальной черты указывается тема в этом файле, описывающая данный пример и параметры запуска RDS).

Папки библиотеки тоже могут иметь всплывающие подсказки – например, для библиотеки «Library1» файл с текстом подсказки должен называться «Library1.txt». Подсказки к вкладкам панели блоков не выводятся, даже если в папке панели будут присутствовать соответствующие им файлы «.txt». Указание на файл справки и примера в файлах «.txt» для библиотек не допускается.

Если вместе с прочими файлами блока или папки находится файл с расширением «.std», такой блок или такая папка или вкладка панели блоков будут считаться стандартными, и пользователь не сможет удалить их через окно библиотеки RDS. Это связано с тем, что стандартные блоки часто включаются в обновления RDS, и, при установке очередного обновления, удаленные пользователем файлы, описывающие блок, снова запишутся на диск, что приведет к восстановлению блока. Файлы таких блоков можно стереть вручную, но, по описанной выше причине, это не рекомендуется. Чтобы убрать стандартные блок, вкладку или папку, лучше всего отключить их отображение во всех используемых конфигурациях (см. §2.16.4).

Описания (название и признак включения в меню) конфигураций библиотек и панели блоков всегда находятся в корневой папке панели блоков в файлах с расширением «.cfs» и «.cfn». В файлах «.cfs» находятся описания конфигураций по умолчанию, входящих в состав RDS, а в файлах «.cfn» с теми же именами – измененные пользователем параметры этих конфигураций. При запуске RDS сначала пытается загрузить параметры каждой конфигурации из файла «.cfn», и, только если его нет, загружает файл «.cfs», поэтому приоритет изменений, сделанных пользователем, всегда выше, чем у стандартных параметров. Для конфигураций, созданных пользователем самостоятельно, существуют только файлы «.cfn» с автоматически сгенерированными именами, файлы «.cfs» для таких конфигураций отсутствуют. Имена файлов описаний стандартных конфигураций всегда начинаются с символов «std_», такие конфигурации не могут быть удалены пользователем по причине, описанной выше для стандартных блоков. Имена файлов конфигураций, созданных пользователем, обычно начинаются с символов «usr_».

Файлы «.cfs» и «.cfn» – текстовые, их формат одинаков и имеет следующую структуру:

      On=признак_включения_в_меню_1_или_0
      Name=имя_конфигурации_в_меню

Параметр «On=1» включает отображение данной конфигурации в подменю выбора конфигураций, параметр «On=0» – выключает, а после «Name=» указывается имя конфигурации, под которым она входит в это меню (это имя никак не связано с именем файла «.cfs» или «.cfn»).

Порядок (конфигураций и в меню определяется текстовыми файлами «ordercfg.def» и «ordercfg.lst», которые также находятся в корневой папке панели блоков. Файл «ordercfg.def» определяет исходный, заданный разработчиками RDS, порядок стандартных конфигураций, а файл «ordercfg.lst», имеющий больший приоритет при загрузке – порядок конфигураций, заданный пользователем в окне редактирования конфигураций. Сами файлы – текстовые, их строки содержат имена файлов конфигураций без расширения в том порядке, в котором соответствующие конфигурации располагаются в меню. Следует учитывать, что файлы порядка содержит имена файлов «.cfs» и «.cfn», а не названия конфигураций, которые записаны внутри этих файлов и отображаются в меню. То есть если, например, в файле «ordercfg.lst» на первой строчке записано «std_l49», то первым пунктом в меню выбора конфигураций будет название, записанное после «Name=» внутри файла «std_l49.cfn» или, если он отсутствует, «std_l49.cfs».

Включение и выключение отображения конкретного блока или библиотеки (вкладки панели) в разные конфигурации хранится в файле с именем, совпадающим с именем файла блока или папки библиотеки, и расширением «.cfg» (параметры, измененные пользователем, они имеют больший приоритет) или «.cfd» (исходные параметры стандартного блока или библиотеки, заданные разработчиками). Это также текстовые файлы, каждая строка которых состоит из имени файла описания конфигурации без расширения, знака равенства и числа 1 (блок включен в эту конфигурацию) или 0 (блок исключен из конфигурации). Например, можно в одну папку с файлом блока «Hand.blk» поместить файл «Hand.cfg» со следующим текстом:

      std_l49=1
      std_l57=0

Это будет означать, что данный блок включен в конфигурацию, параметры которой хранятся в файле «std_l49.cfn» или «std_l49.cfs» в корневой папке панели блоков, и скрыт в конфигурации, параметры которой хранятся в файлах «std_l57.*». Если имя файла какой-либо конфигурации отсутствует в файле включения в конфигурации, блок по умолчанию считается включенным в нее.

В библиотеке блоки и вложенные папки библиотек всегда сортируются по имени в алфавитном порядке, сначала – папки, потом – блоки. Порядок вкладок на панели блоков и блоков на каждой вкладке в каждой конфигурации задается специальными текстовыми файлами:

- для работы при отключенных конфигурациях, то есть при выборе в меню пункта «все блоки» – файл «order.def» для порядка по умолчанию и «order.lst» для порядка, измененного пользователем;
- для конфигурации, параметры которой хранятся в файлах «имя_файла.cfg» и «имя_файла.cfd» (см. выше) – файл «имя_файла.ord» для порядка по умолчанию и «имя_файла.oru» для порядка, измененного пользователем.

В этих файлах указываются имена вкладок или файлов блоков слева направо в том порядке, в котором они изображаются на панели: по одному имени на строке. Файлы, задающие порядок вкладок, размещается в самой папке панели блоков, а файлы, задающие порядок блоков на вкладке – внутри папки этой вкладки (файл «order.lst» можно видеть в содержимом папки-вкладки на рис. 273 внизу). Все эти файлы должны иметь кодировку UTF8. Если в файле будет отсутствовать имя какой-либо существующей папки или файла блока, эта вкладка или этот блок все равно отобразятся на панели в самом конце списка.

Если для папки панели блоков задано независимое название, это название будет храниться в кодировке UTF8 в текстовом файле «libname.lst» внутри этой папки. При переименовании папки содержимое этого файла, очевидно, изменяться не будет, а, значит, не будет изменяться и название вкладки на панели. Изменение названия вкладки внутри этого файла также, очевидно, не приводит к изменению имени папки, поэтому название вкладки и имя папки в этом случае никак не связаны и не влияют друг на друга.

Если в какой-либо папке в библиотеках или панели блоков будет находиться файл с именем «service.def» (его содержимое не важно), папка будет считаться служебной, и не будет отображаться в виде библиотеки или вкладки панели блоков. Служебные папки обычно используются как хранилище стандартных блоков, ссылки на которые (см. ниже) размещаются в видимых пользователю библиотеках.

В папку библиотеки или панели блоков не обязательно помещать сам файл блока с расширением «.blk» или «.rds». Вместо него можно разместить в папке текстовый файл ссылки на блок с расширением «.pth», в котором будет записан путь к файлу блока, находящемуся где-то в другом месте (в этом пути можно использовать символические обозначения стандартных папок RDS – «$PANEL$», «$RDS$» и т. п.) Например, стандартному числовому индикатору в разных папках-вкладках панели блоков соответствует файл «DDisplay.pth» следующего содержания:

      $PANEL$\_Service\Display\DDisplay.blk

Это означает, что сам файл описания блока находится в файле «DDisplay.blk» в подпапке «\_Service\Display\» в корневой папке панели блоков («$PANEL$»).

Использование ссылок позволяет хранить единственный файл описания блока и легко вносить в него изменения без необходимости выяснения, в скольких разных библиотеках или вкладках панели этот блок используется. Для всех стандартных блоков, входящих в состав RDS, в библиотеках хранятся именно файлы ссылок, а сами файлы блоков записаны в скрытую папку «_Service» внутри корневой папки панели блоков. Пользователь может копировать стандартные блоки на созданные им вкладки панели или в созданные им библиотеки, при этом будет копироваться только ссылка на файл. Если очередное обновление RDS будет содержать новую версию стандартного блока, его новый файл описания заменит старый внутри папки «_Service», и все ссылки, включая скопированные пользователем, будут указывать уже на новый файл.

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

Все файлы, описывающие библиотеки и панель блоков RDS, перечислены в следующей таблице:

Файл | Назначение
--- | ---
В корневой папке панели блоков
std_XXX.cfs | Описание стандартной конфигурации, входящей в состав RDS. Название конфигурации никак не связано с именем файла (частью имени XXX), оно записано внутри этого файла.
std_XXX.cfn | Описание стандартной конфигурации, измененное пользователем (может быть изменено название конфигурации и признак ее включения в меню).
usr_XXX.cfn | Описание конфигурации, созданной пользователем. Название конфигурации никак не связано с именем файла (частью имени XXX), оно записано внутри этого файла. XXX в имени файла подбирается автоматически для обеспечения уникальности имен.
ordercfg.def | Исходный порядок стандартных конфигураций в меню.
ordercfg.lst | Порядок конфигураций в меню, измененный пользователем.
В любой папке библиотеки и во вложенной папке панели
XXX.blk, XXX.rds | Файл описания блока «XXX». Для всех типов блоков кроме подсистем (например, для простых блоков) используется расширение «.blk», для подсистем – «.rds».
XXX.pth | Ссылка на файл описания блока, находящийся в какой-либо другой папке (ссылка записана внутри файла в текстовом виде). Как бы ни назывался файл описания по ссылке, в данной библиотеке блок будет называться по имени файла ссылки, то есть «XXX».
XXX.std | Файл-признак того, что «XXX» – стандартный блок или стандартная библиотека (папка), входящие в состав RDS, и их удаление, перемещение и переименование через интерфейс окна библиотеки запрещены. Содержимое файла не играет роли, важен факт его наличия рядом с файлом блока или папкой библиотеки/вкладки.
XXX.bmp, XXX.b16, XXX.b32 | Файлы значков блока для библиотеки и панели в формате растровых рисунков (BMP) для блока «XXX». Расширение «.b16» используется для мелких значков, «.b32» – для крупных, «.bmp» – для любых.
XXX.ico, XXX.i16, XXX.i32 | Файлы значков блока для библиотеки и панели в формате иконок Windows для блока «XXX». Расширение «.i16» используется для мелких значков, «.i32» – для крупных, «.ico» – для любых.
XXX.txt | Текстовый файл с описанием всплывающей подсказки, справки и примера схемы для блока «XXX».
XXX.cfd | Исходная принадлежность блока к стандартным конфигурациям (только для стандартных блоков).
XXX.cfg | Измененная пользователем принадлежность блока к конфигурациям.
В папках панели блоков
order.def | Исходный порядок стандартных блоков или стандартных вкладок при отключенных конфигурациях (вариант «все блоки»).
order.lst | Измененный пользователем порядок блоков или вкладок при отключенных конфигурациях (вариант «все блоки»).
std_XXX.ord | Исходный порядок блоков или вкладок для стандартной конфигурации, описание которой находится в файле с тем же именем и расширениями «.cfs» или «.cfn».
std_XXX.oru, usr_XXX.oru | Измененный пользователем порядок блоков или вкладок для конфигурации, описание которой находится в файле с тем же именем и расширениями «.cfs» или «.cfn».
libname.lst | Измененное пользователем название вкладки, внутри папки которой находится этот файл. Используется если название вкладки не совпадает с названием ее папки из-за того, что вкладка – стандартная, или из-за недопустимых символов в названии.
В любой папке
service.def | Признак скрытой служебной папки. Папки, в которых находится этот файл, не отображаются в виде библиотек или вкладок панели блоков. Содержимое файла не играет роли, важен факт его присутствия.

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