Управление X выделением
selection параметр ?арг арг...?
Команда предоставляет интерфейс Tcl для механизма Х выделения и реализует полный набор функций выделения, описанный в (1). Аргумент параметр определяет формат последующих аргументов и поведение команды. В настоящее время поддерживаются следующие формы команды:
Создает программу обработки запросов на поиск выделения: при каждой попытке поиска выделения указанного типа в окне (например, командой selection get) будет выполняться команда . По умолчанию значением параметра выделение является PRIMARY, параметра тип STRING, и параметра формат тоже STRING. Если значением параметра команда является пустая строка, то все программы обработки для указанного окна , типа и выделения удаляются.
Если при запросе выделения окно является его владельцем и выделение имеет указанный тип, то к команде добавляется два числа (отделенных пробелами от имени команды и друг от друга) и она исполняется как команда Tcl. Эти два дополнительных числа представляют собой смещение и максБайт: смещение задает положение первого символа в выделении, а максБайт максимальное количество байтов для поиска. Возвращаемое командой значение должно начинаться с указанного символа в выделении и должно быть не длиннее максБайт. Для очень больших выделений (длина которых превышает максБайт) поиск будет повторяться многократно с возрастающими смещениями. Если длина строки, возвращаемой командой, меньше максБайт, то предполагается, что возвращенное значение включает в себя весь остаток выделения; если длина результата совпадает с максБайт, то команда будет выполняться повторно пока она не возвратит, наконец, строку, более короткую, чем указано параметром максБайт. Значение максБайт всегда довольно велико (порядка нескольких тысяч байтов).
Если в результате работы команды возникает ошибка, то запрос на поиск отвергается, как если бы никакого выделения вообще не существовало.
Аргумент формат задает представление, используемое для передачи выделения автору запроса (см. (1), второй столбец в Таблице 2), его значение по умолчанию STRING. Если значением аргумента формат является STRING, то выделение передается в виде 8-битовых символов ASCII (т.е. в том же виде, в каком его возвращает команда). Если его значение ATOM, то возвращаемое значение разбивается на поля, отделенные друг от друга пробелами; каждое поле преобразуется в свое атомарное значение и вместо имени атома передается 32-битовое атомарное значение. В любом другом формате возвращаемое командой значение разбивается на поля, отделенные друг от друга пробелами, и каждое поле преобразуется в целое 32-битовое число; полученный массив целых чисел передается автору запроса.
Аргумент формат необходим лишь для обеспечения совместимости пользователям, не использующим Tk. Если для поиска выделения используется Tk, то на выходе из запроса результат преобразуется назад в строку, поэтому аргумент формат не играет роли.
Первая форма команды selection own возвращает имя пути окна в данном приложении, владеющего выделением на дисплее, содержащем окно; если таких окон нет, то команда возвращает пустую строку. По умолчанию значением параметра выделение является PRIMARY, а параметра окно ".".
Вторая форма команды selection own делает окно новым владельцем выделения на дисплее окна; она возвращает пустую строку. Текущий владелец выделения (если такой существует) получает сообщение о том, что он потерял выделение. Если задан параметр команда, то его значением является скрипт Tcl, который должен исполняться при попытке какого-либо другого окна заявить права на выделение вне данного окна. По умолчанию значением параметра выделение является PRIMARY.