projman/hlp/ru/tk/pack-old.html

237 lines
14 KiB
HTML
Raw Normal View History

<!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
2015-10-19 13:27:31 +03:00
<html>
<head>
<title>pack-old</title>
</head>
<body>
<h1>pack-old</h1>
<p>Устаревшая команда для геометрического менеджера упаковки
окон.</p>
2015-10-19 13:27:31 +03:00
<h2><a name=СИНТАКСИС></a>СИНТАКСИС</h2>
2015-10-19 13:27:31 +03:00
<pre>
<strong>pack after</strong> sibling <em>окно параметры</em> ?<em>окно параметры...</em>?
<strong>pack append</strong> parent <em>окно параметры</em> ?<em>окно параметры...</em>?
<strong>pack before</strong> sibling <em>окно параметры</em> ?<em>окно параметры...</em>?
<strong>pack unpack</strong> <em>окно</em>
2015-10-19 13:27:31 +03:00
</pre>
<h2><a name=ОПИСАНИЕ></a>ОПИСАНИЕ</h2>
<p><strong>Замечание</strong>. Ниже описан синтаксис команды
<strong>pack</strong>, употреблявшейся в версиях Tk до 3.3. Хотя
в целях совместимости поддержка команды в системе сохранена,
команда является устаревшей и использовать ее не
следует. Возможно, в будущем ее поддержка
прекратится.</p>
<p>Упаковщик представляет собой геометрический менеджер,
предназначенный для размещения непосредственных потомков
примитива по сторонам примитива в порядке их появления. Первый
потомок размещается вдоль одной стороны примитива, занимая всю
протяженность окна вдоль этой стороны. В результате, для
следующих потомков остается усеченное окно, как если бы
выбранная сторона сдвинулась внутрь на размер первого
потомка. Вдоль одной из сторон оставшейся области размещается
второй потомок, и так далее до тех пор, пока не будут размещены
все потомки или пока не исчерпается свободное место.</p>
<p>Формы <strong>before</strong>, <strong>after</strong> и
<strong>append</strong> команды <strong>pack</strong>
используются для вставки одного или нескольких непосредственных
потомков в очередь упаковки их родителя. В форме
<strong>before</strong> команда вставляет окно-потомка перед
родственными узлами; все остальные окна должны быть узлами
одного уровня. В форме <strong>after</strong> окна вставляются
после родственных узлов, а в форме <strong>append</strong>
добавляет одно или несколько окон к очереди упаковки их
<em>родителя</em>. Если <em>окно</em>, указанное в любой из этих
команд уже упаковано в родительское окно, то оно удаляется со
своего текущего положения в порядке упаковки и перемещается в
соответствии с командой. Все эти команды возвращают в качестве
результата пустую строку.</p>
<p>Форма <strong>unpack</strong> команды <strong>pack
command</strong> удаляет <em>окно</em> из очереди упаковки его
родителя и стирает его с экрана. После выполнения этой команды
упаковщик более не управляет геометрией <em>окна</em>.</p>
<p>На самом деле, размещение каждого потомка представляет собой
четырехступенчатую процедуру; значение <em>параметра</em>,
следующего за <em>окном</em>, представляет собой список из
одного или нескольких полей, управляющих размещением окна. В
нижеследующем обсуждении термин <em>полость</em> (cavity)
обозначает место в окне-родителе, оставшееся после размещения
конкретного потомка (т.е. все то место, которое не было
запрошено при размещении предыдущих потомков в очереди). Термин
<em>доля</em> (parcel) обозначает количество места,
отведенного конкретному потомку; это количество не обязательно
соответствует окончательной геометрии окна-потомка.</p>
<p>Первый шаг в размещении потомка состоит в выборе стороны
полости, вдоль которой он будет располагаться. Для указания
стороны можно пользоваться любым из следующих параметров:</p>
2015-10-19 13:27:31 +03:00
<dl>
<dt><strong>top</strong></dt>
<dd>Отводит долю потомка у верхней стороны полости на всю ширину
полости.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>bottom</strong> </dt>
<dd>Отводит долю потомка у нижней стороны полости на всю ширину
полости.</dd>
2015-10-19 13:27:31 +03:00
<dt> <strong>left</strong> </dt>
<dd>Отводит долю потомка у левой стороны полости на всю высоту
полости.</dd>
2015-10-19 13:27:31 +03:00
<dt> <strong>right</strong> </dt>
<dd>Отводит долю потомка у правой стороны полости на всю высоту
полости.</dd>
2015-10-19 13:27:31 +03:00
</dl>
<p>Для каждого окна следует задать ровно один из этих
параметров. Значением стороны по умолчанию является
<strong>top</strong>. Второй шаг состоит в определении доли
потомка. Для <strong>верхнего</strong> и
<strong>нижнего</strong> окон желательная ширина доли обычно
совпадает с шириной полости, а желательная высота совпадает с
запрошенной высотой доли, которая передается команде
Tk_GeometryRequest. Для <strong>левого</strong> и
<strong>правого</strong> окон желательная высота доли обычно
совпадает с высотой полости, а желательная ширина совпадает с
запрошенной шириной доли. Однако с помощью каждого из описанных
ниже параметров для окна можно запросить дополнительное
место:</p>
2015-10-19 13:27:31 +03:00
<dl>
<dt><strong>padx</strong> <em>число</em> </dt>
2015-10-19 13:27:31 +03:00
<dd>Добавляет <em>число</em> пикселей к запрошенной
ширине окна перед вычислением размера доли, как это было описано
выше.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>pady</strong> <em>число</em></dt>
2015-10-19 13:27:31 +03:00
<dd>Добавляет <em>число</em> пикселей к запрошенной высоте окна
перед вычислением размера доли, как это было описано
выше.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>expand</strong></dt>
<dd>Этот параметр указывает на то, что доля окна захватывает все
свободное пространство, оставшееся в полости окна-родителя
после упаковки всех его потомков. Размер оставшегося
пространства зависит от размеров, запрошенных для всех
потомков; он может равняться нулю. Если
<strong>расширения</strong> (expand) затребовали несколько
окон, то вся дополнительная ширина будет поделена поровну
между всеми <strong>левыми</strong> и <strong>правыми</strong>
окнами, запросившими <strong>расширение</strong>, а вся
дополнительная высота будет поделена поровну между всеми
<strong>верхними</strong> и <strong>нижними</strong> окнами,
запросившими <strong>расширение</strong>.</dd>
2015-10-19 13:27:31 +03:00
</dl>
<p>Если желаемая ширина или высота превосходит соответствующую
протяженность полости, то вместо нее используется эта размер
этой протяженности.</p>
2015-10-19 13:27:31 +03:00
<p>На третьем шаге размещения окна следует принять решение о его
ширине и высоте. По умолчанию окно получает либо запрошенные
ширину и высоту, либо ширину и высоту доли в зависимости от
того, что из них меньше. Если доля больше, чем запрошенный
размер окна, то окно можно расширить так, чтобы оно полностью
или частично покрывало долю, с помощью следующих параметров:</p>
2015-10-19 13:27:31 +03:00
<dl>
<dt><strong>fill</strong></dt>
<dd>Делает размеры окна равными размерам доли.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>fillx</strong></dt>
<dd>Увеличивает ширину окна до ширины доли, сохраняя высоту
окна.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>filly</strong></dt>
<dd>Увеличивает высоту окна до высоты доли, сохраняя ширину
окна.</dd>
2015-10-19 13:27:31 +03:00
</dl>
<p>На последнем этапе происходит размещение окна внутри его
доли. Если размеры окна и доли совпадают, то окно просто целиком
заполняет долю. Если доля больше окна, то положение окна
определяется с помощью одного из следующих параметров:</p>
2015-10-19 13:27:31 +03:00
<dl>
<dt><strong>frame center</strong></dt>
<dd>Размещает окно по центру доли. Если параметр размещения
опущен, то центральное размещение принимается по
умолчанию.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>frame n</strong></dt>
<dd>Размещает окно так, что его верхняя сторона располагается по
центру верхней стороны доли.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>frame ne</strong></dt>
<dd>Размещает окно так, что его правый верхний угол
располагается в правом верхнем углу доли.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>frame e</strong></dt>
<dd>Размещает окно так, что его правая сторона располагается по
центру правой стороны доли.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>frame se</strong></dt>
<dd>Размещает окно так, что его правый нижний угол располагается
в правом нижнем углу доли.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>frame s</strong></dt>
<dd>Размещает окно так, что его нижняя сторона располагается по
центру нижней стороны доли.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>frame sw</strong></dt>
<dd>Размещает окно так, что его левый нижний угол располагается
в левом нижнем углу доли.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>frame w</strong></dt>
<dd>Размещает окно так, что его левая сторона располагается по
центру левой стороны доли.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>frame nw</strong></dt>
<dd>Размещает окно так, что его левый верхний угол располагается
в левом верхнем углу доли.</dd>
2015-10-19 13:27:31 +03:00
</dl>
<p>Упаковщик управляет состоянием размещенный/неразмещенный всех
упакованных непосредственных окон-потомков. При упаковке окон
упаковщик автоматически выводит их на экран; кроме того, он
стирает окна, для которых в полости остается недостаточно
места.</p>
2015-10-19 13:27:31 +03:00
<p>Упаковщик посылает геометрические запросы от имени родителя
размещаемых окон. Для каждого окна-родителя он запрашивает
размер, достаточный для размещения всех упакованных потомков в
соответствии с указанными параметрами, так что на расширение
остается нулевой остаток.</p>
2015-10-19 13:27:31 +03:00
</body>
</html>