selection

Управление X выделением

СИНТАКСИС

      selection параметр ?арг арг...?
    

ОПИСАНИЕ

Команда предоставляет интерфейс Tcl для механизма Х выделения и реализует полный набор функций выделения, описанный в (1). Аргумент параметр определяет формат последующих аргументов и поведение команды. В настоящее время поддерживаются следующие формы команды:

selection clear ?-displayof окно? ?-selection выделение?
Если на дисплее окна имеются выделения, их следует очистить так, чтобы ни одно из окон не владело выделением. Параметр выделение задает X выделение, которое должно быть очищено; его значением должно быть имя атома, например, PRIMARY или CLIPBOARD; полное описание см. в (1). По умолчанию значением параметра выделение является PRIMARY, а параметра окно ".". Команда возвращает пустую строку.
selection get ?-displayof окно ?-selection выделение? ?-type тип?
Ищет выделение на дисплее окна и возвращает его значение в качестве результата. По умолчанию значением параметра выделение является PRIMARY, а параметра окно ".". Параметр тип задает вид возвращаемого результата (в терминологии (1) "цель"), его значением должно быть имя атома, например, STRING или FILE_NAME; полное описание см. (1). По умолчанию он имеет значение STRING. Владелец выделения может выбрать для его вывода любой из форматов STRING, ATOM, INTEGER и т.д. (этот формат отличается от типа выделения; детально различия описаны в (1)). Если формат, в котором выделение возвращается, не строковый, например, INTEGER или ATOM, то команда selection преобразует выделение в строковый формат, представляя его в виде набора полей, разделенных пробелами: атомы представляются своими текстовыми именами, а все остальное преобразуется в последовательность шестнадцатиричных цифр.
selection handle ?-selection выделение? ?-typeтип? ?-format формат? окно команда

Создает программу обработки запросов на поиск выделения: при каждой попытке поиска выделения указанного типа в окне (например, командой selection get) будет выполняться команда . По умолчанию значением параметра выделение является PRIMARY, параметра тип STRING, и параметра формат тоже STRING. Если значением параметра команда является пустая строка, то все программы обработки для указанного окна , типа и выделения удаляются.

Если при запросе выделения окно является его владельцем и выделение имеет указанный тип, то к команде добавляется два числа (отделенных пробелами от имени команды и друг от друга) и она исполняется как команда Tcl. Эти два дополнительных числа представляют собой смещение и максБайт: смещение задает положение первого символа в выделении, а максБайт максимальное количество байтов для поиска. Возвращаемое командой значение должно начинаться с указанного символа в выделении и должно быть не длиннее максБайт. Для очень больших выделений (длина которых превышает максБайт) поиск будет повторяться многократно с возрастающими смещениями. Если длина строки, возвращаемой командой, меньше максБайт, то предполагается, что возвращенное значение включает в себя весь остаток выделения; если длина результата совпадает с максБайт, то команда будет выполняться повторно пока она не возвратит, наконец, строку, более короткую, чем указано параметром максБайт. Значение максБайт всегда довольно велико (порядка нескольких тысяч байтов).

Если в результате работы команды возникает ошибка, то запрос на поиск отвергается, как если бы никакого выделения вообще не существовало.

Аргумент формат задает представление, используемое для передачи выделения автору запроса (см. (1), второй столбец в Таблице 2), его значение по умолчанию STRING. Если значением аргумента формат является STRING, то выделение передается в виде 8-битовых символов ASCII (т.е. в том же виде, в каком его возвращает команда). Если его значение ATOM, то возвращаемое значение разбивается на поля, отделенные друг от друга пробелами; каждое поле преобразуется в свое атомарное значение и вместо имени атома передается 32-битовое атомарное значение. В любом другом формате возвращаемое командой значение разбивается на поля, отделенные друг от друга пробелами, и каждое поле преобразуется в целое 32-битовое число; полученный массив целых чисел передается автору запроса.

Аргумент формат необходим лишь для обеспечения совместимости пользователям, не использующим Tk. Если для поиска выделения используется Tk, то на выходе из запроса результат преобразуется назад в строку, поэтому аргумент формат не играет роли.

selection own ?-displayof окно? ?-selection выделение?
selection own ?-command команда? ?-selection выделение? окно

Первая форма команды selection own возвращает имя пути окна в данном приложении, владеющего выделением на дисплее, содержащем окно; если таких окон нет, то команда возвращает пустую строку. По умолчанию значением параметра выделение является PRIMARY, а параметра окно ".".

Вторая форма команды selection own делает окно новым владельцем выделения на дисплее окна; она возвращает пустую строку. Текущий владелец выделения (если такой существует) получает сообщение о том, что он потерял выделение. Если задан параметр команда, то его значением является скрипт Tcl, который должен исполняться при попытке какого-либо другого окна заявить права на выделение вне данного окна. По умолчанию значением параметра выделение является PRIMARY.