6. "Продвинутый уровень" работы в Dia

6.1. Layers (Слои)

6.1.1. Simple case (Простой случай)

Предположим, у нас есть четыре UML "класса" объектов, и требуется нарисовать прямоугольник вокруг двух из них. Однако размещенный в последствии прямоугольник перекрывает вид двух «классов».

Перекладывание прямоугольника назад решает эту проблему.

Перемещение объекта на задний план выполняется за счет его выделения и затем:

  1. (длинный путь) выбрать команду Объекты ? Переместить на задний план (или Переместить дальше).
  2. (быстро) Ctrl + Shift + B
взаимное расположение объектов при создании схемы

6.1.2. Full layering (Полное расслоение)

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

Если вы знакомы со слоями Gimp'а, то вы в деле – здесь такой же механизм. В противном случае, будьте внимательны.

Когда вы начинаете создавать новую диаграмму, после установки свойств страницы, следует отобразить окно работы со слоями (Вид ? Показать слои). В окне Dia справа появится такая панель:

Использование слоев в Dia

Нажмите на кнопку создания нового слоя (голубой плюс), и у вас будет "Новый слой". По умолчанию он разместится выше фонового слоя и будет выделен. Выделенный слой можно переместить относительно других слоев с помощью зеленых стрелок вверх и вниз. Конечно, вым следует оставить фоновый слой в нижней части стека.

Щелчки на глазе рядом со слоем включают-отключают его видимость на диаграмме. Как правило, вы создаете каждый слой по отдельности, включив только его видимость, затем включаете видимость на всех слоях время от времени, чтобы проверить выравнивание.

В нашем примере, мы помещаем текстовый объект со словом "DRAFT" на фоновый слой. Мы делаем этот текстовый объект серым с помощью селектора цвета. Затем переходим на новый слой и создаем диаграмму. Если оба слоя будут видимы, то получится примерно следующее:

Размещение объектов на слоях

6.2. Alignment (Выравнивание)

Предположим, что у нас есть несколько небрежно выровненных объектов:

Выравнивание объектов в Dia

Мы могли бы очень осторожно перемещать их и сделать выровненными. Но лучше обратиться к использованию функций выравнивания. Выберите два левых круга и выполните команду Объекты ? Выравнивать ? По левому краю (Shift + Alt + L). Тоже самое нужно сделать для правых кругов. Затем следует выделить пары верхних и нижних и выровнять их по верху или низу.

Выровненые круги

6.3. Selection (Выделение)

Очевидными способами выделения являются:

  1. Щелчок указателем на объекте.
  2. Щелчок указателем с зажатой кнопкой Shift на 1 или более объектов.
  3. Перемещение указателя с зажатой левой кнопкой мыши через объекты, которые требуется выделить. При перемещении видна штрих-линия.

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

Меню Выделение в Dia

Например, применительно к этой схеме, после выделения объекта «А»:

Пример схемы
  • Всё. Все боксы и линии будут выделены.
  • Нет. Ничего не будет выделено (выделение также снимается с А).
  • Обратить. Выделится всё, за исключением А.
  • Связанные. Выделятся А, L1 и L3, т.к. L1 и L3 непосредственно связаны с А.
  • Вложенные. A, B, C, D, и L1, L2, L3 выделятся, потому что последовательно соединены, вы можете перетягивать каждый из них. E остается не выделенным, т. к. не связан с ними.
  • Того же типа. A, B, C, D, E будут выделены, т.к. они одного и того же типа объектов Dia (т.е. все они классы объектов UML).

ПРИМЕЧАНИЕ: Если я когда-нибудь выясню, что делают радиокнопки, я дам вам знать.

6.4. Shape Libraries (Библиотеки элементов)

Dia поставляется с несколькими библиотеками уже готовых форм. Их также можно использовать для создания собственных.

Эти библиотеки, конечно, предметно-ориентированные, так что их использование должно быть описано в других контекстах (например, UML должен обсуждаться в руководстве по разработке программного обеспечения). Здесь мы сосредоточимся на механизме использования элементов библиотек.

Каждая библиотека сохранятся в отдельную директорию везде, где Dia может быть установлен. Например, если Dia расположен в /usr/bin/dia, то нам бы хотелось посмотреть /usr/share/dia.

/usr/share/dia/
  dia_logo.png         Dia's logo
  shapes/
    Flowchart/         objects, in paired files (icon and shape)
      magdisk.xpm      icon
      magdisk.shape    shape description
      ...
  sheets/      object descriptions in various languages (XML)
    ER.sheet
    Flowchart.sheet
    UML.sheet
    ...

Например, если нас интересует библиотека Flowchart (Блок-схема), в частности объект magnetic disk, мы находим файл magdisk.shape:

<?xml version="1.0"?>
 
<shape xmlns="http://www.daa.com.au/~james/dia-shape-ns"
       xmlns:svg="http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-20000303-stylable.dtd">
  <name>Flowchart - Magnetic Disk</name>
  <description>Magnetic Disk</description>
  <icon>magdisk.xpm</icon>
  <connections>
    <point x="0"   y="2"/>
    <point x="2.5" y="0.4375"/>
    <point x="5"   y="0"/>
    <point x="7.5" y="0.4375"/>
    <point x="10"  y="0"/>
    <point x="0"   y="2.5"/>
    <point x="0"   y="7.5"/>
    <point x="0"   y="5"/>
    <point x="0"   y="10"/>
    <point x="10"  y="2.5"/>
    <point x="10"  y="5"/>
    <point x="10"  y="7.5"/>
    <point x="10"  y="10"/>
    <point x="2.5" y="11.5625"/>
    <point x="5"   y="12"/>
    <point x="7.5" y="11.5625"/>
  </connections>
  <textbox x1="0" y1="4" x2="10" y2="10"/>
  <svg:svg width="10" height="12">
    <svg:path d="M 0,2 c 2,-1.5 3,-2 5,-2 s 3,0.5 5,2 v 8
                 c -2,1.5 -3,2 -5,2 s -3,-0.5 -5,-2 v -8 z
                 M 0,2 c 2,1.5 3,2 5,2 s 3,-0.5 5,-2" style="fill: default"/>
  </svg:svg>
</shape>

Примечание:

  • Название значений элементов описано в строках файла Flowchart.sheet

<object name="Flowchart - Magnetic Disk">
      <description xml:lang="no">Magnetdisk</description>
      <description xml:lang="fr">Disque Magnйtique</description>
      <description xml:lang="de">Magnetdisk</description>
      <description>Magnetic Disk</description>
    </object>

Таким образом, мы получаем подсказки для каждого конкретного языка.

  • Значение icon есть имя файла значка, отображаемого в главном окне программы.
  • Форма описана на Scalable Vector Graphics (SVG): ширина/высота и путь.
  • Местонахождение точек соединения дается в контексте ширины и высоты. Вы можете добавить другие точки соединения, если хотите.
  • Связанное текстовое поле также определяется в контексте ширины и высоты. В оригинале оно находится под объектом magdisk. При желании вы можете ее передвинуть к центру объекта magdisk.

Вы можете делать ваши собственные библиотеки и формы, следуя за приведенными выше шаблонами.

Некоторые формы библиотек (например, UML) имеют связанную обработку и поэтому имеют не просто .shape-файл. Создание собственной библиотеки-с-обработкой требует разборки кода на языке C, что выходит за рамки этого руководства. (Возможно, встроенный Python будет поддерживаться в будущем, что упростит и это приключение.) ПП: кажется это уже свершилось.

в общем

ну очень малосодержательная статья

в общем

Хотя это перевод официального учебника. И в целом - полезно, особенно по началу! Спасибо!