-background | -foreground | -relief |
-takefocus | -borderwidth | -height |
-selectbackground | -width | -cursor |
-highlightbackground | -selectborderwidth | -xscrollcommand |
-font | -highlightthickness | -setgrid |
Задает один из нескольких стилей
управления выделением. Параметр может принимать произвольное значение,
однако привязки по умолчанию предполагают, что его значение является одним
из следующих: single , browse, multiple или listbox. По умолчанию параметр имеет значение browse .
Задает желаемую ширину окна (число
символов в строчке текста в нем). Если ширина символа в данном шрифте непостоянна,
то для перевода числа символов в единицы экрана используется ширина символа
"0". Если значение параметра неположительно, то ширина окна выбирается
таким образом, чтобы в нем помещались все элементы списка.
Окно со списком представляет собой примитив, в котором выводятся строки - элементы списка - по одному на строчку окна. С помощью описываемых ниже команд примитива в список можно добавлять новые элементы или удалять элементы оттуда. Кроме того, можно выделить один или несколько элементов, как описано ниже. Экспорт выделенного текста (см. описание параметра exportSelection) осуществляется по стандартному протоколу X11 для выделений; выделения в поле ввода имеют тип STRING. Значение строки выделения составляется из выделенных элементов, разделенных символами перехода на новую строчку.
Все элементы списка не обязательно выводятся в окне со списком одновременно. Содержимое окна можно поменять с помощью описываемых ниже команд. Окна со списком поддерживают прокрутку в обоих направлениях с помощью стандартных параметров xScrollCommand и yScrollCommand. Кроме того, возможно сканирование окон (см. описание ниже).
число
Задает номер элемента в списке. Первый элемент имеет номер 0.
active
Задает элемент, на котором расположен курсор списка. Если примитив находится в фокусе клавиатуры, то этот элемент подчеркивается. Он устанавливается командой примитива activate .
anchor
Задает опорную точку выделения, которую устанавливает команда примитива selection anchor .
end
Указывает конец списка. Для большинства команд это последний элемент списка, однако некоторые команды, такие как index и insert считают его элементом, следующим непосредственно за последним элементом списка.
@x,y
Указывает элемент, накрывающий точку в окне со списком с координатами (x,y) (заданными в пикселях). Если заданная точка не накрывается ни одним элементом, то указывает элемент, ближайший к этой точке.
Аргументы с именами индекс, первый и последний в описываемых ниже командах примитива представляют собой индексы в одной из описанных выше форм.
имяПути параметр арг арг ...
имяПути curselection
имяПути scan mark x y
имяПути xview
В режиме выделения single или browse допустимо выделение не более одного элемента. В обоих режимах щелчок клавишей 1 "Мыши" на элементе приводит к его выделению и отмене всех остальных выделений. В режиме browse выделенный элемент можно также перетащить с помощью клавиши 1 "Мыши".
В режимах выделения multiple или extended можно одновременно выделить несколько элементов, не обязательно идущих в списке подряд. В режиме multiple щелчок клавиши 1 "Мыши" на элементе переключает состояние его выделенности, не влияя на выделение остальных элементов. В режиме extended нажатие клавиши на элементе выделяет его, отменяет выделение всех остальных элементов и устанавливает опорную точку выделения на элемент под курсором "Мыши"; если при этом тащить "Мышь" с нажатой клавишей 1, то выделение распространится на все элементы между опорным и элементом, находящимся под сдвинувшимся курсором "Мыши".
В большинстве случаев для одиночных выделений используется режим browse, а для кратных - режим extended; остальные режимы оказываются полезными в некоторых особых ситуациях.
Помимо описанного выше поведения привязки по умолчанию задают следующие дополнительные характеристики поведения примитива:
В режиме extended выделенную область можно изменить нажатием клавиши 1 при нажатой клавише Shift; при этом выделенной становится вся область между опорной точкой и элементом под курсором "Мыши".
В режиме extended нажатие клавиши 1 при нажатой клавише Control начинает выполнение операции переключения: опорная точка устанавливается на элемент под курсором "Мыши", а состояние его выделения меняется на противоположное. Выделение остальных элементов не изменяется. Если тащить "Мышь" с нажатой клавишей 1, то состояние выделения всех элементов между опорной точкой и курсором "Мыши" меняется на состояние выделения опорного элемента; выделение остальных элементов не изменяется.
Если "Мышь" сдвигается с окна со списком при нажатой клавише 1, то информация в окне прокручивается в противоположном направлении. Прокрутка продолжается до тех пор, пока либо "Мышь" не вернется в область окна, либо будет достигнут конец списка.
Для прокрутки можно использовать клавишу 2 "Мыши". Если ее нажать и протащить "Мышь" по списку, то содержимое списка будет прокручиваться в направлении движения "Мыши".
При нажатии на клавиши Up или Down курсор окна (активный элемент) передвигается на одну строчку вверх или вниз. В режиме browse или extended новый активный элемент оказывается выделенным, а выделение всех остальных элементов отменяется. В режиме extended новый активный элемент становится опорной точкой выделения.
В режиме extended клавиши Shift-Up и Shift-Down передвигают курсор окна на одну строчку вверх или вниз и расширяют область выделения новым активным элементом подобно тому, как это делает клавиша 1 "Мыши".
Нажатие на клавиши Left или Right приводит к перемещению курсора ввода на ширину символа 0 влево или вправо.
Нажатие на клавиши Control-Left и Control-Right приводит к прокрутке списка на ширину окна, также, как и нажатие на клавиши Control-Prior и Control-Next .
Нажатие на клавиши Prior и Next приводит к прокрутке списка на одну страницу (на высоту окна) вверх или вниз.
Нажатие на клавиши Home и End прокручивает список горизонтально до его левого или правого края соответственно.
Нажатие на клавиши Control-Home устанавливает курсор окна на первый элемент списка, выделяет этот элемент и отменяет выделение всех остальных элементов.
Нажатие на клавиши Control-End устанавливает курсор окна на последний элемент списка, выделяет этот элемент и отменяет выделение всех остальных элементов.
В режиме extended нажатие на клавиши Control-Shift-Home расширяет выделение до первого элемента в списке, а на клавиши Control-Shift-End - до последнего элемента в списке.
В режиме multiple нажатие на клавиши Control-Shift-Home устанавливает курсор окна на первый элемента в списке, а на клавиши Control-Shift-End - на последний элемент в списке.
Клавиши пробела и Select выделяют активный элемент (курсор окна), как если бы на этом элементе была нажата клавиша1 "Мыши".
В режиме extended нажатие на клавиши Control-Shift-пробел и Shift-Select расширяет выделение до активного элемента, как если бы на этом элементе была нажата клавиша 1 "Мыши" при нажатой клавише Shift .
В режиме extended нажатие на клавиши Escape отменяет самое последнее выделение и восстанавливает предыдущее состояние выделение всех элементов в области выделения.
Control-/ выделяет все элементы окна.
Control-\ приводит к отмене текущего выделения (за исключением режима browse, где эта команда не приводит ни к какому результату).
Клавиша F16, на многих станциях Sun обозначенная Copy , (или Meta-w) копирует выделение в примитиве в карман.
Определяя новые параметры для отдельных примитивов или переопределяя параметры класса, поведение окна со списком можно изменить.