236 lines
9.1 KiB
HTML
236 lines
9.1 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||
<html>
|
||
<head>
|
||
<title>pack-old</title>
|
||
</head>
|
||
<body>
|
||
<h1>pack-old</h1>
|
||
|
||
<p>Устаревшая команда для геометрического менеджера упаковки
|
||
окон.</p>
|
||
|
||
<h2><a name="СИНТАКСИС"></a>СИНТАКСИС</h2>
|
||
|
||
<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>
|
||
</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>
|
||
|
||
<dl>
|
||
<dt><strong>top</strong></dt>
|
||
|
||
<dd>Отводит долю потомка у верхней стороны полости на всю ширину
|
||
полости.</dd>
|
||
|
||
<dt><strong>bottom</strong> </dt>
|
||
|
||
<dd>Отводит долю потомка у нижней стороны полости на всю ширину
|
||
полости.</dd>
|
||
|
||
<dt> <strong>left</strong> </dt>
|
||
|
||
<dd>Отводит долю потомка у левой стороны полости на всю высоту
|
||
полости.</dd>
|
||
|
||
<dt> <strong>right</strong> </dt>
|
||
|
||
<dd>Отводит долю потомка у правой стороны полости на всю высоту
|
||
полости.</dd>
|
||
</dl>
|
||
|
||
<p>Для каждого окна следует задать ровно один из этих
|
||
параметров. Значением стороны по умолчанию является
|
||
<strong>top</strong>. Второй шаг состоит в определении доли
|
||
потомка. Для <strong>верхнего</strong> и
|
||
<strong>нижнего</strong> окон желательная ширина доли обычно
|
||
совпадает с шириной полости, а желательная высота совпадает с
|
||
запрошенной высотой доли, которая передается команде
|
||
Tk_GeometryRequest. Для <strong>левого</strong> и
|
||
<strong>правого</strong> окон желательная высота доли обычно
|
||
совпадает с высотой полости, а желательная ширина совпадает с
|
||
запрошенной шириной доли. Однако с помощью каждого из описанных
|
||
ниже параметров для окна можно запросить дополнительное
|
||
место:</p>
|
||
|
||
<dl>
|
||
<dt><strong>padx</strong> <em>число</em> </dt>
|
||
|
||
<dd>Добавляет <em>число</em> пикселей к запрошенной
|
||
ширине окна перед вычислением размера доли, как это было описано
|
||
выше.</dd>
|
||
|
||
<dt><strong>pady</strong> <em>число</em></dt>
|
||
|
||
<dd>Добавляет <em>число</em> пикселей к запрошенной высоте окна
|
||
перед вычислением размера доли, как это было описано
|
||
выше.</dd>
|
||
|
||
<dt><strong>expand</strong></dt>
|
||
|
||
<dd>Этот параметр указывает на то, что доля окна захватывает все
|
||
свободное пространство, оставшееся в полости окна-родителя
|
||
после упаковки всех его потомков. Размер оставшегося
|
||
пространства зависит от размеров, запрошенных для всех
|
||
потомков; он может равняться нулю. Если
|
||
<strong>расширения</strong> (expand) затребовали несколько
|
||
окон, то вся дополнительная ширина будет поделена поровну
|
||
между всеми <strong>левыми</strong> и <strong>правыми</strong>
|
||
окнами, запросившими <strong>расширение</strong>, а вся
|
||
дополнительная высота будет поделена поровну между всеми
|
||
<strong>верхними</strong> и <strong>нижними</strong> окнами,
|
||
запросившими <strong>расширение</strong>.</dd>
|
||
</dl>
|
||
|
||
<p>Если желаемая ширина или высота превосходит соответствующую
|
||
протяженность полости, то вместо нее используется эта размер
|
||
этой протяженности.</p>
|
||
|
||
<p>На третьем шаге размещения окна следует принять решение о его
|
||
ширине и высоте. По умолчанию окно получает либо запрошенные
|
||
ширину и высоту, либо ширину и высоту доли в зависимости от
|
||
того, что из них меньше. Если доля больше, чем запрошенный
|
||
размер окна, то окно можно расширить так, чтобы оно полностью
|
||
или частично покрывало долю, с помощью следующих параметров:</p>
|
||
|
||
<dl>
|
||
<dt><strong>fill</strong></dt>
|
||
|
||
<dd>Делает размеры окна равными размерам доли.</dd>
|
||
|
||
<dt><strong>fillx</strong></dt>
|
||
|
||
<dd>Увеличивает ширину окна до ширины доли, сохраняя высоту
|
||
окна.</dd>
|
||
|
||
<dt><strong>filly</strong></dt>
|
||
|
||
<dd>Увеличивает высоту окна до высоты доли, сохраняя ширину
|
||
окна.</dd>
|
||
</dl>
|
||
|
||
<p>На последнем этапе происходит размещение окна внутри его
|
||
доли. Если размеры окна и доли совпадают, то окно просто целиком
|
||
заполняет долю. Если доля больше окна, то положение окна
|
||
определяется с помощью одного из следующих параметров:</p>
|
||
|
||
<dl>
|
||
<dt><strong>frame center</strong></dt>
|
||
|
||
<dd>Размещает окно по центру доли. Если параметр размещения
|
||
опущен, то центральное размещение принимается по
|
||
умолчанию.</dd>
|
||
|
||
<dt><strong>frame n</strong></dt>
|
||
|
||
<dd>Размещает окно так, что его верхняя сторона располагается по
|
||
центру верхней стороны доли.</dd>
|
||
|
||
<dt><strong>frame ne</strong></dt>
|
||
|
||
<dd>Размещает окно так, что его правый верхний угол
|
||
располагается в правом верхнем углу доли.</dd>
|
||
|
||
<dt><strong>frame e</strong></dt>
|
||
|
||
<dd>Размещает окно так, что его правая сторона располагается по
|
||
центру правой стороны доли.</dd>
|
||
|
||
<dt><strong>frame se</strong></dt>
|
||
|
||
<dd>Размещает окно так, что его правый нижний угол располагается
|
||
в правом нижнем углу доли.</dd>
|
||
|
||
<dt><strong>frame s</strong></dt>
|
||
|
||
<dd>Размещает окно так, что его нижняя сторона располагается по
|
||
центру нижней стороны доли.</dd>
|
||
|
||
<dt><strong>frame sw</strong></dt>
|
||
|
||
<dd>Размещает окно так, что его левый нижний угол располагается
|
||
в левом нижнем углу доли.</dd>
|
||
|
||
<dt><strong>frame w</strong></dt>
|
||
|
||
<dd>Размещает окно так, что его левая сторона располагается по
|
||
центру левой стороны доли.</dd>
|
||
|
||
<dt><strong>frame nw</strong></dt>
|
||
|
||
<dd>Размещает окно так, что его левый верхний угол располагается
|
||
в левом верхнем углу доли.</dd>
|
||
</dl>
|
||
|
||
<p>Упаковщик управляет состоянием размещенный/неразмещенный всех
|
||
упакованных непосредственных окон-потомков. При упаковке окон
|
||
упаковщик автоматически выводит их на экран; кроме того, он
|
||
стирает окна, для которых в полости остается недостаточно
|
||
места.</p>
|
||
|
||
<p>Упаковщик посылает геометрические запросы от имени родителя
|
||
размещаемых окон. Для каждого окна-родителя он запрашивает
|
||
размер, достаточный для размещения всех упакованных потомков в
|
||
соответствии с указанными параметрами, так что на расширение
|
||
остается нулевой остаток.</p>
|
||
|
||
</body>
|
||
</html>
|