<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN> <html> <head> <title>selection</title> </head> <body> <h1>selection</h1> <p>Управление X выделением</p> <h2><a name=СИНТАКСИС></a>СИНТАКСИС</h2> <pre> <strong>selection</strong> <em>параметр</em> ?<em>арг арг...</em>? </pre> <h2><a name=ОПИСАНИЕ></a>ОПИСАНИЕ</h2> <p>Команда предоставляет интерфейс Tcl для механизма Х выделения и реализует полный набор функций выделения, описанный в (1). Аргумент <em>параметр</em> определяет формат последующих аргументов и поведение команды. В настоящее время поддерживаются следующие формы команды:</p> <dl> <dt><strong>selection clear</strong> ?<strong>-displayof</strong> <em>окно</em>? ?<strong>-selection</strong> <em>выделение</em>?</dt> <dd>Если на дисплее окна имеются выделения, их следует очистить так, чтобы ни одно из окон не владело выделением. Параметр <em>выделение</em> задает X выделение, которое должно быть очищено; его значением должно быть имя атома, например, PRIMARY или CLIPBOARD; полное описание см. в (1). По умолчанию значением параметра <em>выделение</em> является PRIMARY, а параметра <em>окно</em> ".". Команда возвращает пустую строку.</dd> <dt><strong>selection get</strong> ?<strong>-displayof</strong> <em>окно</em> ?<strong>-selection</strong> <em>выделение</em>? ?<strong>-type</strong> <em>тип</em>?</dt> <dd>Ищет выделение на дисплее окна и возвращает его значение в качестве результата. По умолчанию значением параметра <em>выделение</em> является <strong>PRIMARY</strong>, а параметра <em>окно</em> ".". Параметр <em>тип</em> задает вид возвращаемого результата (в терминологии (1) "цель"), его значением должно быть имя атома, например, <strong>STRING</strong> или <strong>FILE_NAME</strong>; полное описание см. (1). По умолчанию он имеет значение <strong>STRING</strong>. Владелец выделения может выбрать для его вывода любой из форматов <strong>STRING</strong>, <strong>ATOM</strong>, <strong>INTEGER</strong> и т.д. (этот формат отличается от типа выделения; детально различия описаны в (1)). Если формат, в котором выделение возвращается, не строковый, например, <strong>INTEGER</strong> или <strong>ATOM</strong>, то команда <strong>selection</strong> преобразует выделение в строковый формат, представляя его в виде набора полей, разделенных пробелами: атомы представляются своими текстовыми именами, а все остальное преобразуется в последовательность шестнадцатиричных цифр.</dd> <dt><strong>selection handle</strong> ?<strong>-selection</strong> <em>выделение</em>? ?<strong>-type</strong><em>тип</em>? ?<strong>-format</strong> <em>формат</em>? <em>окно команда</em></dt> <dd><p>Создает программу обработки запросов на поиск выделения: при каждой попытке поиска выделения указанного типа в окне (например, командой <strong>selection get</strong>) будет выполняться <em>команда</em> . По умолчанию значением параметра <em>выделение</em> является PRIMARY, параметра <em>тип</em> STRING, и параметра <em>формат</em> тоже STRING. Если значением параметра <em>команда</em> является пустая строка, то все программы обработки для указанного <em>окна</em> , <em>типа</em> и <em>выделения</em> удаляются.</p> <p>Если при запросе выделения окно является его владельцем и <em>выделение</em> имеет указанный тип, то к команде добавляется два числа (отделенных пробелами от имени команды и друг от друга) и она исполняется как команда Tcl. Эти два дополнительных числа представляют собой смещение и максБайт: смещение задает положение первого символа в выделении, а максБайт максимальное количество байтов для поиска. Возвращаемое командой значение должно начинаться с указанного символа в выделении и должно быть не длиннее максБайт. Для очень больших выделений (длина которых превышает максБайт) поиск будет повторяться многократно с возрастающими смещениями. Если длина строки, возвращаемой командой, меньше максБайт, то предполагается, что возвращенное значение включает в себя весь остаток выделения; если длина результата совпадает с максБайт, то команда будет выполняться повторно пока она не возвратит, наконец, строку, более короткую, чем указано параметром максБайт. Значение максБайт всегда довольно велико (порядка нескольких тысяч байтов).</p> <p>Если в результате работы команды возникает ошибка, то запрос на поиск отвергается, как если бы никакого выделения вообще не существовало.</p> <p>Аргумент <em>формат</em> задает представление, используемое для передачи выделения автору запроса (см. (1), второй столбец в Таблице 2), его значение по умолчанию STRING. Если значением аргумента <em>формат</em> является STRING, то <em>выделение</em> передается в виде 8-битовых символов ASCII (т.е. в том же виде, в каком его возвращает команда). Если его значение ATOM, то возвращаемое значение разбивается на поля, отделенные друг от друга пробелами; каждое поле преобразуется в свое атомарное значение и вместо имени атома передается 32-битовое атомарное значение. В любом другом формате возвращаемое командой значение разбивается на поля, отделенные друг от друга пробелами, и каждое поле преобразуется в целое 32-битовое число; полученный массив целых чисел передается автору запроса.</p> <p>Аргумент <em>формат</em> необходим лишь для обеспечения совместимости пользователям, не использующим Tk. Если для поиска выделения используется Tk, то на выходе из запроса результат преобразуется назад в строку, поэтому аргумент формат не играет роли.</p> </dd> <dt><strong>selection own</strong> ?<strong>-displayof</strong> <em>окно</em>? ?<strong>-selection</strong> <em>выделение</em>?</dt> <dt><strong>selection own</strong> ?<strong>-command</strong> <em>команда</em>? ?<strong>-selection</strong> <em>выделение</em>? <em>окно</em></dt> <dd><p>Первая форма команды <strong>selection own</strong> возвращает имя пути окна в данном приложении, владеющего <em>выделением</em> на дисплее, содержащем <em>окно</em>; если таких окон нет, то команда возвращает пустую строку. По умолчанию значением параметра <em>выделение</em> является PRIMARY, а параметра <em>окно</em> ".".</p> <p>Вторая форма команды <strong>selection own</strong> делает <em>окно</em> новым владельцем <em>выделения</em> на дисплее окна; она возвращает пустую строку. Текущий владелец <em>выделения</em> (если такой существует) получает сообщение о том, что он потерял выделение. Если задан параметр <em>команда</em>, то его значением является скрипт Tcl, который должен исполняться при попытке какого-либо другого окна заявить права на выделение вне данного окна. По умолчанию значением параметра <em>выделение</em> является PRIMARY.</p> </dd> </dl> </body> </html>