2018-02-05 17:22:04 +03:00
|
|
|
|
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
<html>
|
|
|
|
|
<head>
|
|
|
|
|
<title>pack</title>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
|
|
|
|
|
<h1>pack</h1>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Геометрический менеджер, который упаковывает виджеты по
|
|
|
|
|
сторонам внутреннего пространства окна.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<h2><a name=СИНТАКСИС></a>СИНТАКСИС</h2>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<strong>pack</strong> <em>option arg</em> ?<em>arg ...</em>?
|
|
|
|
|
</pre>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<h2><a name=ОПИСАНИЕ></a>ОПИСАНИЕ</h2>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Команда <strong>pack</strong> используется для управления
|
|
|
|
|
соответствующим геометрическим менеджером, размещающим виджеты
|
|
|
|
|
по различным сторонам родительского окна, и для получения от
|
|
|
|
|
него справочной информации. Команда может иметь перечисленные
|
|
|
|
|
ниже формы в зависимости от значения аргумента
|
2015-10-19 13:27:31 +03:00
|
|
|
|
<em>option</em>.</p>
|
|
|
|
|
|
|
|
|
|
<dl>
|
|
|
|
|
<dt><strong>pack</strong> <em>slave</em> ?<em>slave</em> ...?
|
|
|
|
|
?<em>options</em>?</dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Если первый аргумент команды является именем окна (любая
|
|
|
|
|
величина, начинающаяся с "."), команда выполняется
|
|
|
|
|
точно также, как команда <strong>pack configure.</strong></dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dt><strong>pack configure</strong> <em>slave</em>
|
|
|
|
|
?<em>slave</em> ...? ?<em>options</em>?</dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd><p>Аргумент команды состоит из имени одного или нескольких
|
|
|
|
|
размещаемых виджетов, после которых идут пары аргументов,
|
|
|
|
|
состоящих из имени опции и ее значения. Подробное описание
|
|
|
|
|
действий, выполняемых при размещении виджетов приведено ниже
|
|
|
|
|
(см. "<a href=#АЛГОРИТМ_РАЗМЕЩЕНИЯ_pack>Алгоритм
|
|
|
|
|
упаковки <em>pack</em></a>"). Ниже перечислены
|
|
|
|
|
возможные опции команды.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dl>
|
|
|
|
|
<dt><strong>-after</strong> <em>other</em></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd><em>Other</em> должно быть именем другого
|
|
|
|
|
окна. Мастер-окна <em>other</em> используется как мастер
|
|
|
|
|
для slave. Список <em>slave slave ...</em> вставляется в
|
|
|
|
|
список размещаемых окон сразу после <em>other</em>.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dt><strong>-anchor</strong> <em>anchor</em></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd><em>Anchor</em> должен быть одной из возможных позиций
|
|
|
|
|
якоря, например, <strong>n</strong> или
|
|
|
|
|
<strong>sw</strong>. Он определяет как размещается slave в
|
|
|
|
|
отведенном ему пространстве. Значение по умолчанию
|
2015-10-19 13:27:31 +03:00
|
|
|
|
<strong>c</strong>.</dd>
|
|
|
|
|
|
|
|
|
|
<dt><strong>-before</strong> <em>other</em></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd><em>Other</em> должно быть именем другого
|
|
|
|
|
окна. Мастер-окно окна <em>other</em> используется как
|
|
|
|
|
мастер-окно для <em>slave</em>. Список <em>slave slave
|
|
|
|
|
...</em> вставляется в список размещаемых окон
|
|
|
|
|
непосредственно перед <em>other</em>.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dt><strong>-expand</strong> <em>boolean</em></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Определяет, будут ли перечисленные виджеты расширяться
|
|
|
|
|
при наличии свободного пространства в
|
|
|
|
|
мастер-окне. <em>Boolean</em> должно иметь булево
|
|
|
|
|
значение, например, <strong>1</strong> или
|
|
|
|
|
<strong>no</strong>. Значение по умолчанию
|
2015-10-19 13:27:31 +03:00
|
|
|
|
"0".</dd>
|
|
|
|
|
|
|
|
|
|
<dt><strong>-fill</strong> <em>style</em></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd><p>Если в мастер-окне для <em>slave</em> имеется свободное
|
|
|
|
|
пространство, управляет растяжением виджета slave.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Аргумент <em>style</em> может иметь одно из следующих
|
|
|
|
|
значений:</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dl>
|
|
|
|
|
<dt><strong>none</strong></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Предоставляет виджету <em>slave</em> требуемый
|
|
|
|
|
размер (включая поля, запрошенные с помощью опций
|
|
|
|
|
<strong>-ipadx</strong> или
|
|
|
|
|
<strong>-ipady</strong>). Это значение по
|
|
|
|
|
умолчанию.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dt><strong>x</strong></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Расширяет виджет <em>slave</em> в горизонтальном
|
|
|
|
|
направлении так, чтобы он заполнил все свободное
|
|
|
|
|
пространство (за исключением внешних полей, заданных с
|
|
|
|
|
помощью опции <strong>-padx</strong>).</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dt><strong>y</strong></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Расширяет виджет <em>slave</em> в вертикальном
|
|
|
|
|
направлении так, чтобы он заполнил все свободное
|
|
|
|
|
пространство (за исключением внешних полей, заданных с
|
|
|
|
|
помощью опции <strong>-pady</strong>.)</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dt><strong>both</strong></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Расширяет виджет <em>slave</em> в обоих
|
|
|
|
|
направлениях.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</dl>
|
|
|
|
|
</dd>
|
|
|
|
|
|
|
|
|
|
<dt><strong>-in</strong> <em>other</em></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Включает slave(s) в конец списка размещаемых окон для
|
|
|
|
|
окна <em>other</em>.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dt><strong>-ipadx</strong> <em>amount</em></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Аргумент amount указывает размер горизонтальных
|
|
|
|
|
внутренних полей, которые должны быть с обеих сторон
|
|
|
|
|
виджета slave. Размер должен быть указан в одной из форм,
|
|
|
|
|
в которой можно задавать размеры на экране, например,
|
|
|
|
|
<strong>2</strong> (2 пикселя) или <strong>.5c</strong>
|
|
|
|
|
(0.5 сантиметра). Значение по умолчанию 0.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dt><strong>-ipady</strong> <em>amount</em></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Аргумент <em>amount</em> указывает размер вертикальных
|
|
|
|
|
внутренних полей, которые должны быть с обеих сторон
|
|
|
|
|
виджета slave. Размер должен быть указан в одной из форм,
|
|
|
|
|
в которой можно задавать размеры на экране, например,
|
|
|
|
|
<strong>2</strong> (2 пикселя) или <strong>.5c</strong>
|
|
|
|
|
(0.5 сантиметра). Значение по умолчанию 0.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dt><strong>-padx</strong> <em>amount</em></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Аргумент <em>amount</em> указывает размер горизонтальных
|
|
|
|
|
внешних полей, которые должны быть с обеих сторон виджета
|
|
|
|
|
slave. Размер должен быть указан в одной из форм, в
|
|
|
|
|
которой можно задавать размеры на экране, например,
|
|
|
|
|
<strong>2</strong> (2 пикселя) или <strong>.5c</strong>
|
|
|
|
|
(0.5 сантиметра). Значение по умолчанию 0.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dt><strong>-pady</strong> <em>amount</em></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Аргумент <em>amount</em> указывает размер вертикальных
|
|
|
|
|
внешних полей, которые должны быть с обеих сторон виджета
|
|
|
|
|
slave. Размер должен быть указан в одной из форм, в
|
|
|
|
|
которой можно задавать размеры на экране, например,
|
|
|
|
|
<strong>2</strong> (2 пикселя) или <strong>.5c</strong>
|
|
|
|
|
(0.5 сантиметра). Значение по умолчанию 0.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dt><strong>-side</strong> <em>side</em></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Определяет, к какой стороне мастер-окна будут помещены
|
|
|
|
|
виджеты slave. Возможные значения аргумента <em>side</em>:
|
2015-10-19 13:27:31 +03:00
|
|
|
|
<strong>left</strong>, <strong>right</strong>,
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<strong>top</strong> или <strong>bottom</strong>. Значение
|
|
|
|
|
по умолчанию <strong>top</strong>.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</dl>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Если никакая из опций <strong>-in</strong>,
|
|
|
|
|
<strong>-after</strong> или <strong>-before</strong> не
|
|
|
|
|
указана, каждый из <em>slave</em> будет внесен в конец
|
|
|
|
|
списка размещения своего непосредственного родителя (если
|
|
|
|
|
только он не был внесен туда ранее, в этом случае он
|
|
|
|
|
останется на своем прежнем месте). Если же одна из
|
|
|
|
|
перечисленных опций указана, все <em>slave</em> будут
|
|
|
|
|
внесены в соответствующий список в указанное место.</p>
|
|
|
|
|
|
|
|
|
|
<p>Если какие-либо из <em>slave</em> окон ранее уже
|
|
|
|
|
обрабатывались геометрическим менеджером, то для не
|
|
|
|
|
определенных в команде опций будут использоваться старые
|
|
|
|
|
значения, а не значения по умолчанию.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</dd>
|
|
|
|
|
|
|
|
|
|
<dt><strong>pack forget</strong> <em>slave</em> ?<em>slave ...</em>?</dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Перечисленные окна удаляются из списка упаковки и с
|
|
|
|
|
экрана. Эти окна больше не управляются геометрическим
|
|
|
|
|
менеджером.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dt><strong>pack info</strong> <em>slave</em></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Возвращает список опций и их значений для окна
|
|
|
|
|
<em>slave</em> в той же форме, в какой они задаются в команде
|
|
|
|
|
<strong>pack configure</strong>. Первые два элемента списка
|
|
|
|
|
"<strong>-in</strong> <em>master</em>", где
|
|
|
|
|
"<em>master</em>" - имя окна, в котором размещается
|
2015-10-19 13:27:31 +03:00
|
|
|
|
<em>slave</em>.</dd>
|
|
|
|
|
|
|
|
|
|
<dt><strong>pack propagate</strong> <em>master</em>
|
|
|
|
|
?<em>boolean</em>?</dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Аргумент <em>boolean</em>, если он задан, определяет, будет
|
|
|
|
|
ли окно <em>master</em> расширяться при необходимости
|
|
|
|
|
(подробности приведены ниже, см. "<a href=
|
|
|
|
|
#РАСШИРЕНИЕ_ВИДЖЕТОВ>Расширение виджетов</a>"). Команда
|
|
|
|
|
при этом возвращает пустую строку. Если аргумент не задан,
|
|
|
|
|
команда возвращает текущее значение опции (<strong>0</strong>
|
|
|
|
|
или <strong>1</strong>). По умолчанию расширение
|
|
|
|
|
разрешено.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dt><strong>pack slaves</strong> <em>master</em></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Возвращает список всех размещаемых окон для
|
|
|
|
|
<em>master</em>. Если в окне <em>master</em> нет размещаемых
|
|
|
|
|
окон, возвращается пустой список.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<h2><a name=АЛГОРИТМ_УПАКОВКИ_PACK></a>АЛГОРИТМ УПАКОВКИ pack</h2>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Для каждого мастер-окна менеджер pack формирует список
|
|
|
|
|
упаковки. Место каждого виджета в нем может задаваться с помощью
|
|
|
|
|
опций <strong>-in</strong>, <strong>-after</strong> и
|
|
|
|
|
<strong>-before</strong>. Если эти опции не использовались,
|
|
|
|
|
каждый новый виджет добавляется в конец списка своего
|
|
|
|
|
непосредственного предка.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Менеджер размещает виджеты в окне, последовательно просматривая
|
|
|
|
|
список упаковки. В момент обработки каждого из размещаемых
|
|
|
|
|
виджетов внутри мастера есть прямоугольная незаполненная
|
|
|
|
|
область. Эта область называется "полость". Для первого
|
|
|
|
|
обрабатываемого виджета "полость" совпадает со всей
|
|
|
|
|
внутренностью мастер-окна.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Для каждого из размещаемых виджетов выполняются следующие
|
|
|
|
|
действия:</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<ul>
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<li>менеджер размещает прямоугольную область для очередного
|
|
|
|
|
виджета у стороны полости, заданной опцией
|
|
|
|
|
<strong>-side</strong>. Если значение опции
|
|
|
|
|
<strong>top</strong> или <strong>bottom</strong>, то ширина
|
|
|
|
|
области равна ширине полости, а высота равна требуемой для
|
|
|
|
|
виджета высоте плюс внешние и внутренние поля, заданные
|
|
|
|
|
опциями <strong>-ipady</strong> и <strong>-pady</strong>. Если
|
|
|
|
|
значение опции равно <strong>left</strong> или
|
|
|
|
|
<strong>right</strong>, высота области равна высоте полости, а
|
|
|
|
|
ширина определяется размером виджета плюс полями, заданными
|
|
|
|
|
опциями <strong>-ipadx</strong> и
|
|
|
|
|
<strong>-padx</strong>. Область может быть расширена в одном
|
|
|
|
|
или обоих направлениях в зависимости от значения опции
|
|
|
|
|
<strong>-expand</strong> (см. ниже "<a
|
|
|
|
|
href=#РАСШИРЕНИЕ_ВИДЖЕТОВ>Расширение
|
|
|
|
|
виджетов</a>").</li>
|
|
|
|
|
|
|
|
|
|
<li>менеджер определяет размеры виджета. Обычно они равны
|
|
|
|
|
размерам, необходимым для виджета, плюс удвоенные внутренние
|
|
|
|
|
поля, но могут быть расширены до размеров области (минус
|
|
|
|
|
удвоенные внешние поля) по одному или обоим направлениям в
|
|
|
|
|
зависимости от значения опции <strong>-fill</strong>.</li>
|
|
|
|
|
|
|
|
|
|
<li>менеджер размещает виджет в отведенном ему
|
|
|
|
|
пространстве. Если виджет меньше свободного пространства,
|
|
|
|
|
используется значение опции <strong>-anchor</strong>. Если
|
|
|
|
|
определены внешние поля, то они всегда сохраняются между
|
|
|
|
|
виджетом и границами области, в которой он помещается.</li>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>После того, как очередной виджет размещен, выделенная ему
|
|
|
|
|
область (см. <a href=>1</a>)) вычитается из полости. Полость
|
|
|
|
|
для следующего виджета остается прямоугольной, но меньшей по
|
|
|
|
|
размеру. Если виджет не занял полностью выделенную ему область,
|
|
|
|
|
ее оставшиеся свободными части не используются при размещении
|
|
|
|
|
последующих виджетов. Если полость оказывается мала для
|
|
|
|
|
очередного виджета, он получает столько пространства, сколько
|
|
|
|
|
осталось. Если полость сокращается до нуля, все оставшиеся
|
|
|
|
|
виджеты в списке упаковки удаляются с экрана. Если размеры окна
|
|
|
|
|
будут увеличены, они появятся на экране.</p>
|
|
|
|
|
|
|
|
|
|
<h2><a name=РАСШИРЕНИЕ_ВИДЖЕТОВ></a>РАСШИРЕНИЕ ВИДЖЕТОВ</h2>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<p>Если мастер-окно оказалось больше, чем необходимо для
|
|
|
|
|
размещения всех виджетов, оставшееся пространство распределяется
|
|
|
|
|
равномерно между теми виджетами, для которых установлена опция
|
|
|
|
|
<strong>-expand</strong>. Дополнительное горизонтальное
|
|
|
|
|
пространство распределяется между теми виджетами, у которых
|
|
|
|
|
опция <strong>-side</strong> равна <strong>left</strong> или
|
|
|
|
|
<strong>right</strong>. Вертикальное пространство распределяется
|
|
|
|
|
между виджетами, у которых опция <strong>-side</strong> равна
|
|
|
|
|
<strong>top</strong> или <strong>bottom</strong>.</p>
|
|
|
|
|
|
|
|
|
|
<h2><a name=РАСПРОСТРАНЕНИЕ_РАЗМЕРОВ></a>РАСПРОСТРАНЕНИЕ РАЗМЕРОВ</h2>
|
|
|
|
|
|
|
|
|
|
<p>Обычно менеджер рассчитывает размеры мастер-окна, необходимые
|
|
|
|
|
для размещения виджетов, и, при необходимости, устанавливает
|
|
|
|
|
размеры мастер-окна таким образом, чтобы в нем в точности
|
|
|
|
|
поместились все виджеты из списка. Это приводит к тому, что
|
|
|
|
|
информация о размерах виджетов распространяется по
|
|
|
|
|
иерархическому дереву виджетов, в результате чего целое
|
|
|
|
|
поддерево изменяет свои размеры при изменении одного из
|
|
|
|
|
листьевых элементов. Однако команда <strong>pack
|
|
|
|
|
propagate</strong> может быть использована для отключения этого
|
|
|
|
|
механизма для одного или нескольких мастер-окон. Если
|
|
|
|
|
распространение размеров отключено, информация о необходимых
|
|
|
|
|
размерах не передается мастер-окну. Это может оказаться
|
|
|
|
|
полезным, если вы хотите, чтобы мастер-окно сохраняло те
|
|
|
|
|
размеры, которые вы определили.</p>
|
|
|
|
|
|
|
|
|
|
<h2><a name=ОГРАНИЧЕНИЯ_НА_МАСТЕРОКНА></a>ОГРАНИЧЕНИЯ НА МАСТЕР-ОКНА</h2>
|
|
|
|
|
|
|
|
|
|
<p>Мастер-окно для каждого размещаемого виджета должно быть его
|
|
|
|
|
непосредственным предком (по умолчанию) или одним из потомков
|
|
|
|
|
его предка. Это ограничение гарантирует разумное поведение
|
|
|
|
|
виджетов при удалении toplevel-окон.</p>
|
|
|
|
|
|
|
|
|
|
<h2><a name=ПОРЯДОК_РАЗМЕЩЕНИЯ></a>ПОРЯДОК РАЗМЕЩЕНИЯ</h2>
|
|
|
|
|
|
|
|
|
|
<p>Если мастер-окно для виджета не является его непосредственным
|
|
|
|
|
предком, необходимо быть уверенным, что виджет лежит в стеке
|
|
|
|
|
окон выше, чем мастер-окно. В противном случае мастер-окно
|
|
|
|
|
закроет собой виджет и создастся впечатление, что виджет не
|
|
|
|
|
упакован правильным образом. Простейший способ избежать подобных
|
|
|
|
|
проблем следить, чтобы -окно было создано раньше, чем виджет
|
|
|
|
|
(чем позже создано окно, тем выше оно в стеке). Если это
|
|
|
|
|
почему-либо неудобно, можно использовать команды
|
|
|
|
|
<strong>raise</strong> и <strong>lower</strong> для изменения
|
|
|
|
|
порядка окон в стеке.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</body>
|
|
|
|
|
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
|