GnuSmalltalkUsersGuide:AdditionalChapter1 50
- BLOX.BWindow
BLOX.BWindow
네임스페이스 BLOX에 정의됨
슈퍼클래스: BLOX.BForm
범주: 그래픽-윈도우
- 나는 최고직에 있다. 내가 없었다면 어떤 것도 볼 수 없고 상호작용 할 수 없다.
BLOX.BWindow 클래스: 인스턴스 생성
new
새로운 최상위 수준 창을 응답하라.
new: label
제목 표시줄 캡션에 'label'이라고 된 새로운 최상위 수준 창을 응답하라.
popup: initializationBlock
이 클래스의 인스턴스를 대상으로 해당 메서드를 호출해서는 안 된다.
BLOX.BWindow: 접근하기
callback
사용자가 매핑해제를 요청할 때 수신자가 파기되었는지 검증하기 위해 전송되는 DirectedMessage를 응답하라.
callback: aReceiver message: aSymbol
사용자가 수신자의 매핑해제(unmap)를 요청하면 aReceiver에 aSymbol 메시지(0- 또는 1-인자 선택자의 이름)가 전송되도록 준비하라. 메서드가 하나의 인자를 수락하면 수신자가 전달된다. 메서드가 true를 리턴하면 창과 그 자식들이 파기된다 (어떤 콜백도 준비되지 않은 경우 기본액션). 메서드가 false를 리턴하면 창은 제자리에 남는다.
invokeCallback
종합적 콜백(synthetic callback)을 생성하여, 어떤 콜백도 준비되지 않거나 콜백 메서드가 true를 응답할 경우 창을 파기하라.
label
위젯에 대한 라벨 옵션의 값을 응답하라.
위젯 내부에 표시될 문자열을 명시한다. 문자열이 표시되는 방식은 특정 위젯에 따라 좌우되고, 앵커와 같은 다른 옵션들에 의해 결정된다. 창(windows)의 경우 이는 창의 제목에 해당한다.
label: value
위젯에 대한 라벨 옵션의 값을 설정하라.
위젯 내부에 표시될 문자열을 명시한다. 문자열이 표시되는 방식은 특정 위젯에 따라 좌우되고, 앵커와 같은 다른 옵션들에 의해 결정된다. 창(windows)의 경우 이는 창의 제목에 해당한다.
위젯에 대한 메뉴 옵션의 값을 설정하라.
메뉴 위젯이 메뉴바로 사용되도록 명시하라. Macintosh에서 메뉴바는 주 모니터의 상단에 걸쳐 표시될 것이다. Microsoft Windows나 모든 UNIX 플랫폼에서는 메뉴가 창 관리자에 의해 관리되는 window dressing의 일부로서 최상단 창에 걸쳐 표시될 것이다.
resizable
위젯에 대한 크기 조정 옵션의 값을 응답하라.
사용자가 창 크기 조정이 가능한지 여부를 응답하라. 크기 조정이 비활성화되면 창의 크기는 가장 최근에 상호작용한 크기 조정이나 geometry-setting 메서드로부터 취한 크기가 될 것이다. 그러한 연산이 없다면 창의 본래(natural) 크기가 사용될 것이다.
resizable: value
위젯에 대한 크기 조정 옵션의 값을 설정하라.
사용자가 창 크기 조정이 가능한지 여부를 응답하라. 크기 조정이 비활성화되면 창의 크기는 가장 최근에 상호작용한 크기 조정이나 geometry-setting 메서드로부터 취한 크기가 될 것이다. 그러한 연산이 없다면 창의 본래(natural) 크기가 사용될 것이다.
BLOX.BWindow: 위젯 프로토콜
center
창을 화면 가운데에 정렬하라.
centerIn: view
창을 주어진 위젯 가운데에 정렬하라.
height
창의 높이를 응답하되 이는 창 관리자가 창에 의무화하는 geometry로부터 추론한 값이다.
height: anInteger
창 관리자에게 주어진 높이를 창으로 제공할 것을 요청하라.
heightAbsolute
창의 높이를 응답하되 이는 창 관리자가 창에 의무화하는 geometry로부터 추론한 값이다.
heightOffset: value
이 클래스의 인스턴스를 대상으로 해당 메서드를 호출해서는 안 된다.
iconify
창을 매핑하고 아이콘화 상태로 만들어라. 창이 아직 매핑되지 않았다면 창을 먼저 취소(withdrawn) 상태로 매핑한 다음 아이콘으로 만들면 된다.
isMapped
창이 매핑되었는지 여부를 응답하라.
isWindow
'true'를 응답하라.
map
창을 매핑하고 Z-순으로 가장 높은 위치에 가져오라.
modalMap
창에 대한 application-local grab를 구축하는 동시에 창을 매핑하라. 이벤트 루프가 시작되고, 이는 창이 파기된 이후에만 끝이 난다. 특정 창에 대한 grab이 설정되면 모든 포인터 이벤트는 Blox의 창 계층구조에서 grab 창과 그 자손들에게 구조조정(restructed)된다. 포인터가 grab 창의 하위트리 내에 있을 때마다 포인터는 전혀 grab grab이 없을 때와 정확히 똑같이 행동할 것이며, 모든 이벤트는 일반적인 방식으로 보고될 것이다. 포인터가 창의 트리 밖에 위치한 경우, 버튼 누름, 버튼 해제, 마우스 모션 이벤트가 grabbing 창으로 보고되고, 창 들어가기(window entry)와 창 닫기(window exit) 이벤트는 무시된다. 다시 말해, grab 하위트리 외부의 창은 화면에 보이지만 grab이 해제될 때까지는 어떤 것도 인식하지 못할 것이다. Grab 창 아래의 창 트리는 최상위 수준의 창을 포함할 수 있는데, 이런 경우 최상위 수준 창과 그의 자손들은 모두 grab 도중에 마우스 이벤트를 계속해서 수신할 것이다. 키보드 이벤트(키 누름과 키 누름해제)는 보통처럼 전달될 것이다: 창 관리자는 어떤 애플리케이션이 키보드 이벤트를 수신하는지를 제어하고, grabbing 애플리케이션 내 어떤 창으로 전송되면 이는 포커스를 가진 창으로 다시 전송될 것이다.
state
창에 대한 상태 옵션의 값을 설정하라.
창의 상태 4가지 중 하나를 명시한다: normal, iconic, withdrawn, (Windows만 해당하는) zoomed.
state: aSymbol
오류를 발생시켜라. BWindow의 상태를 설정하기 위해서는 #map과 #unmap을 사용하라.
unmap
창을 매핑해제하여 창 관리자가 잊어버리도록 하라.
width
창의 너비를 응답하되 이는 창 관리자가 창에 의무화하는 geometry로부터 추론한 값이다.
width: anInteger
창 관리자에게 주어진 너비를 창으로 제공할 것을 요청하라.
width: xSize height: ySize
창 관리자에게 주어진 너비와 높이를 창으로 제공할 것을 요청하라.
widthAbsolute
창의 너비를 응답하되 이는 창 관리자가 창에 의무화하는 geometry로부터 추론한 값이다.
widthOffset: value
이 클래스의 인스턴스를 대상으로 해당 메서드를 호출해서는 안 된다.
window
수신자를 응답하라.
x
창의 상단 좌측 모서리의 x 좌표를 응답하되 이는 창 관리자가 창에 의무화하는 geometry로부터 추론한 값이다.
x: anInteger
창 관리자에게 창의 좌측 테두리를 주어진 x 좌표로 이동하고 크기는 변경하지 않은 채 유지할 것을 요청하라.
x: xPos y: yPos
창 관리자에게 창의 상단 좌측 모서리를 주어진 좌표로 이동하고 크기는 변경하지 않은 채 유지할 것을 요청하라.
x: xPos y: yPos width: xSize height: ySize
창 관리자에게 요청한 geometry를 창에 제공할 것을 요청하라.
xAbsolute
창의 상단 좌측 모서리의 x 좌표를 응답하되 이는 창 관리자가 창에 의무화하는 geometry로부터 추론한 값이다.
xOffset: value
이 클래스의 인스턴스를 대상으로 해당 메서드를 호출해서는 안 된다.
y
창의 상단 좌측 모서리의 y 좌표를 응답하되 이는 창 관리자가 창에 의무화하는 geometry로부터 추론한 값이다.
y: anInteger
창 관리자에게 창의 좌측 테두리를 주어진 y 좌표로 이동하고 크기는 변경하지 않은 채 유지할 것을 요청하라.
yAbsolute
창의 상단 좌측 모서리의 y 좌표를 응답하되 이는 창 관리자가 창에 의무화하는 geometry로부터 추론한 값이다.
yOffset: value
이 클래스의 인스턴스를 대상으로 해당 메서드를 호출해서는 안 된다.