GnuSmalltalkUsersGuide:AdditionalChapter1 49

From 흡혈양파의 번역工房
Revision as of 13:18, 28 January 2014 by Onionmixer (talk | contribs) (GSUG BLOX.BWidget 페이지 추가)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
BLOX.BWidget

BLOX.BWidget

네임스페이스 BLOX에 정의됨

슈퍼클래스: BLOX.Blox

범주: 그래픽-윈도우


나는 메뉴와 관련된 위젯만 제외하고 모든 위젯에 대한 슈퍼클래스이다. 나는 좀 더 공통된 메서드와 기하도형 관리를 제공한다.


BLOX.BWidget 클래스: 팝업

new

BpopupWindow 내부에 수신자의 인스턴스를 생성하라; 창을 매핑하지 말고 새 위젯을 응답하라. 생성된 위젯은 창의 자식이 되어 완전히 부착될 것이다 (예: geometry 메서드는 창의 geometry를 수정할 것이다). 위젯은 루트 창 위에 직접 그려진 *것처럼 보이지만* 사실상 BPopupWindow에 속함을 주목해야 한다; 따라서 위젯을 제거하기 위해서는 위젯이 아니라 창으로 #destroy를 전송해야 한다.

popup: initializationBlock

BPopupWindow 내부에 수신자의 인스턴스를 생성하라; 리턴하기 전에 위젯을 제공된 initializationBlock으로 전달한 후 창을 매핑하라. 새 위젯을 응답하라. 생성된 위젯은 창의 자식이 되어 완전히 부착될 것이다 (예: geometry 메서드는 창의 geometry를 수정할 것이다). 위젯은 루트 창 위에 직접 그려진 *것처럼 보이지만* 사실상 BPopupWindow에 속함을 주목해야 한다; 따라서 위젯을 제거하기 위해서는 위젯이 아니라 창으로 #destroy를 전송해야 한다.


BLOX.BWidget: 접근하기

borderWidth

위젯에 대한 borderWidth 옵션의 값을 응답하라.

위젯 외부를 따라 그리는 3-D 테두리(border)의 너비를 나타내는 음수가 아닌 (non-negative) 값을 명시한다 (테두리가 그려지는 경우 효과 옵션이 주로 이것을 결정). 값은 위젯 내부에 3-D 효과를 그릴 때에 사용할 수도 있다. 값은 픽셀로 측정된다.

borderWidth: value

위젯에 대한 borderWidth 옵션의 값을 설정하라.

위젯 외부를 따라 그리는 3-D 테두리(border)의 너비를 나타내는 음수가 아닌 (non-negative) 값을 명시한다 (테두리가 그려지는 경우 효과 옵션이 주로 이것을 결정). 값은 위젯 내부에 3-D 효과를 그릴 때에 사용할 수도 있다. 값은 픽셀로 측정된다.

cursor

위젯에 대한 커서 옵션의 값을 응답하라.

위젯에 사용될 마우스 커서를 명시한다. 옵션의 값은 표준 X cursor cursor에 의해 주어지는데, 앞에 XC_가 붙지 않고 cursorcursor.h 에 정의된 이름이라면 무엇이든 가능하다.

cursor: value

위젯에 대한 커서 옵션의 값을 설정하라.

위젯에 사용될 마우스 커서를 명시한다. 옵션의 값은 표준 X cursor cursor에 의해 주어지는데, 앞에 XC_가 붙지 않고 cursorcursor.h 에 정의된 이름이라면 무엇이든 가능하다.

effect

위젯에 대한 효과 옵션의 값을 응답하라.

위젯 테두리에 바람직한 효과를 명시한다. 허용되는 값으로는 raised, sunken, flat, ridge, solid, groove가 있다. 값은 위젯 내부가 외부에 비해 어떻게 나타나는지를 나타낸다; 가령, raised는 위젯 내부가 화면에서 볼 때 위젯 외부에 비해 돌출되어 보여야 함을 의미한다. raised와 sunken은 전형적인 3-D 모양을 제공하는 반면(예: Xaw3D의 모양), Ridge는와 groove는 Swing이나 GTK+의 Metal 테마와 같이 "chiseled(조각낸)" 모양을 제공한다. Flat과 solid는 3-D에 해당하지 않는다.

effect: value

위젯에 대한 효과 옵션의 값을 설정하라.

위젯 테두리에 바람직한 효과를 명시한다. 허용되는 값으로는 raised, sunken, flat, ridge, solid, groove가 있다. 값은 위젯 내부가 외부에 비해 어떻게 나타나는지를 나타낸다; 가령, raised는 위젯 내부가 화면에서 볼 때 위젯 외부에 비해 돌출되어 보여야 함을 의미한다. raised와 sunken은 전형적인 3-D 모양을 제공하는 반면(예: Xaw3D의 모양), Ridge는와 groove는 Swing이나 GTK+의 Metal 테마와 같이 "chiseled(조각낸)" 모양을 제공한다. Flat과 solid는 3-D에 해당하지 않는다.

tabStop

위젯에 대한 tabStop 옵션의 값을 응답하라.

키보드 traversal (예: Tab이나 Shift-Tab) 동안 창이 포커스를 수락하는지 결정한다. 포커스를 창으로 설정하기 전에 Blox는 tabStop 옵션의 값을 찾아본다. False 값은 키보드 traversal 동안 창을 완전히 건너뛰어야 함을 의미한다. True는 입력 포커스가 (그것을 포함해 매핑된 모든 조상들) 눈에 보이는 한 창은 입력 포커스를 수신해야 함을 의미한다. 해당 옵션의 설정을 원하지 않는 경우 Blox는 창에 초점을 둘 것인지 여부를 결정한다: 현재 알고리즘은 비활성화되어 키 바인딩이 없는 경우 또는 눈으로 확인할 수 없는 경우 창을 건너뛰도록 되어 있다. 표준 위젯들 중 BForm, BContainer, BLabel, BImage는 기본적으로 키 바인딩을 갖고 있지 않다.

tabStop: value

위젯에 대한 tabStop 옵션의 값을 설정하라.

키보드 traversal (예: Tab이나 Shift-Tab) 동안 창이 포커스를 수락하는지 결정한다. 포커스를 창으로 설정하기 전에 Blox는 tabStop 옵션의 값을 찾아본다. False 값은 키보드 traversal 동안 창을 완전히 건너뛰어야 함을 의미한다. True는 입력 포커스가 (그것을 포함해 매핑된 모든 조상들) 눈에 보이는 한 창은 입력 포커스를 수신해야 함을 의미한다. 해당 옵션의 설정을 원하지 않는 경우 Blox는 창에 초점을 둘 것인지 여부를 결정한다: 현재 알고리즘은 비활성화되어 키 바인딩이 없는 경우 또는 눈으로 확인할 수 없는 경우 창을 건너뛰도록 되어 있다. 표준 위젯들 중 BForm, BContainer, BLabel, BImage는 기본적으로 키 바인딩을 갖고 있지 않다.


BLOX.BWidget: 맞춤설정

addChild: child

자식에 의해 식별된 위젯이 수신자에게 추가되었다. 해당 메서드가 public한 이유는 당신이 그것을 호출할 수 있어서가 아니라 오버라이드가 유용하기 때문이고, 방금 추가된 자식들에 대해 일부 초기화를 실행하기 위해 basicAddChild로 호출해야 함을 잊어버리지 않기 때문이다. 새 자식(child)을 응답하라.

create

수신자가 그 위젯 프로토콜에 응답할 수 있도록 만들어라. 해당 메서드가 public한 이유는 당신이 그것을 호출할 수 있어서가 아니라 오버라이드가 유용하기 때문이고, 방금 생성된 프리미티브 위젯에 대해 일부 초기화를 실행하기 위해 super로 호출해야 함을 잊어버리지 않기 때문이다; 이와 관련된 예제는 BButtonLike의 구현부를 참조하라.

initialize: parentWidget

위젯을 초기화하기 위해 (이름에서 암시하듯) #new: 에 의해 호출된다. 기본 구현은 'customization' 프로토콜 내의 다른 모든 메서드들을 비롯해 수신자의 상태를 일관되게 만드는 데 책임이 있는 private 메서드들을 호출하므로, 수동으로 모든 일을 하기보다는 이를 호출하는 것이 보통이다. 해당 메서드가 public한 이유는 당신이 그것을 호출할 수 있어서가 아니라 오버라이드하기가 유용하기 때문일 것이다. 항시 수신자를 응답하라.

setInitialSize

이는 위젯의 초기 크기를 설정하기 위해 #initialize: 에 의해 호출된다. 기본적으로 전체 영역이 차지된다. 해당 메서드가 public한 이유는 당신이 그것을 호출할 수 있어서가 아니라 오버라이드하기가 유용할 수 있기 때문이다.


BLOX.BWidget: 기하도형 관리

boundingBox

수신자의 바인딩 박스를 포함하는 Rectangle을 응답하라.

boundingBox: rect

수신자의 바인딩 박스를 rect로 (Rectangle) 설정하라.

child: child height: value

주어진 자식의 높이를 값으로 설정하라. 해당 메서드의 기본 구현은 BWidget의 #height 메서드의 주석에 설명된 'rubber-sheet' 기하도형 관리를 이용한다. 자식의 #height: 메서드에 의해 자동으로 호출되는 해당 메서드를 사용해서는 안 되지만 이를 오버라이드하길 원할지도 모른다. 해당 메서드에서 이름이 'Geom'으로 끝나는 자식의 프로퍼티 슬롯은 역전(reverse)된다. 해당 메서드는 절대 실패해선 안 된다 - 수신자가 실행하는 기하도형 관리 유형에 적용되지 않을 경우 아무 일도 하지 말라.

child: child heightOffset: value

주어진 자식의 높이를 고정된 값 픽셀만큼 조정하라. 이는 BWidget의 #height 메서드의 주석에 설명된 'rubber-sheet' 기하도형 관리를 이용하는 기본 구현에서 의미가 크다. 자식의 #heightOffset: 메서드에 의해 자동으로 호출되는 해당 메서드를 사용해서는 안 되지만 이를 오버라이드하길 원할지도 모른다. 수신자가 실행하는 기하도형 관리에 적용되지 않는 경우 위젯의 현재 높이에 값을 추가하라.

child: child stretch: aBoolean

해당 메서드는 수신자로부터 그 최상위 수준까지 경로에 BContainer가 있을 때에만 사용된다. 이는 BContainer의 전체 너비를 채우기 위해 연장된 위젯들 중에 자식이 포함되는지를 결정한다; 이 위젯에 설정되지 않은 경우 위젯 계층구조를 따라 퍼진다.

child: child width: value

주어진 자식의 너비를 값으로 설정하라. 해당 메서드의 기본 구현은 BWidget의 #width 메서드의 주석에 설명된 'rubber-sheet' 기하도형 관리를 이용한다. 자식의 #width: 메서드에 의해 자동으로 호출되는 해당 메서드를 사용해서는 안 되지만 이를 오버라이드하길 원할지도 모른다. 이름이 'Geom'으로 끝나는 자식의 프로퍼티 슬롯이 해당 메서드를 위해 예약된다. 해당 메서드는 절대 실패해선 안 된다 - 수신자가 실행하는 기하도형 관리 유형에 적용되지 않을 경우 아무 일도 하지 말라.

child: child widthOffset: value

주어진 자식의 너비를 고정된 값 픽셀만큼 조정하라. 이는 BWidget의 #width 와 #widthOffset: 메서드의 주석에 설명된 'rubber-sheet' 기하도형 관리를 이용하는 기본 구현에서 의미가 크다. 자식의 #widthOffset: 메서드에 의해 자동으로 호출되는 해당 메서드를 사용해서는 안 되지만 이를 오버라이드하길 원할지도 모른다. 수신자가 실행하는 기하도형 관리에 적용되지 않는 경우 위젯의 현재 너비에 값을 추가하라.

child: child x: value

주어진 자식의 x를 값으로 설정하라. 해당 메서드의 기본 구현은 BWidget의 #x 메서드의 주석에 설명된 'rubber-sheet' 기하도형 관리를 이용한다. 자식의 #x: 메서드에 의해 자동으로 호출되는 해당 메서드를 사용해서는 안 되지만 이를 오버라이드하길 원할지도 모른다. 이름이 'Geom'으로 끝나는 자식의 프로퍼티 슬롯이 해당 메서드를 위해 예약된다. 해당 메서드는 절대 실패해선 안 된다 - 수신자가 실행하는 기하도형 관리 유형에 적용되지 않을 경우 아무 일도 하지 말라.

child: child xOffset: value

주어진 자식의 x를 고정된 값 픽셀만큼 조정하라. 이는 BWidget의 #x 와 #xOffset: 메서드의 주석에 설명된 'rubber-sheet' 기하도형 관리를 이용하는 기본 구현에서 의미가 크다. 자식의 #xOffset: 메서드에 의해 자동으로 호출되는 해당 메서드를 사용해서는 안 되지만 이를 오버라이드하길 원할지도 모른다. 수신자가 실행하는 기하도형 관리에 적용되지 않는 경우 위젯의 현재 x에 값을 추가하라.

child: child y: value

주어진 자식의 y를 값으로 설정하라. 해당 메서드의 기본 구현은 BWidget의 #y 메서드의 주석에 설명된 'rubber-sheet' 기하도형 관리를 이용한다. 자식의 #y: 메서드에 의해 자동으로 호출되는 해당 메서드를 사용해서는 안 되지만 이를 오버라이드하길 원할지도 모른다. 이름이 'Geom'으로 끝나는 자식의 프로퍼티 슬롯이 해당 메서드를 위해 예약된다. 해당 메서드는 절대 실패해선 안 된다 - 수신자가 실행하는 기하도형 관리 유형에 적용되지 않을 경우 아무 일도 하지 말라.

child: child yOffset: value

주어진 자식의 y를 고정된 값 픽셀만큼 조정하라. 이는 BWidget의 #y 와 #yOffset: 메서드의 주석에 설명된 'rubber-sheet' 기하도형 관리를 이용하는 기본 구현에서 의미가 크다. 자식의 #yOffset: 메서드에 의해 자동으로 호출되는 해당 메서드를 사용해서는 안 되지만 이를 오버라이드하길 원할지도 모른다. 수신자가 실행하는 기하도형 관리에 적용되지 않는 경우 위젯의 현재 y에 값을 추가하라.

extent

수신자의 크기를 포함하는 Point를 응답하라.

extent: extent

수신자의 크기를 extent(Point 객체)에 포함된 너비와 높이로 설정하라.

height

부모 위젯 내에 수신자의 높이에서 'variable' 부분을 응답하라. 리턴된 값은 #heightOffset: 이 나타내는 고정 픽셀 양을 포함하지 않으며, 상대적으로 해석되어야 한다: resize를 실행 시 부모의 현재 크기에 대한 리턴값의 비율이 유지될 것이다. 이렇게 복잡한 메서드는 'rubber sheet' 기하도형 관리로 알려진다. 좌변이나 우변이 부모의 클라이언트 영역 내부에 있지 않을 경우 행위는 정의되지 않는다 - 창은 서로 맞물려 고정(clamped)되거나 명세(specification)에 따라 위치가 지정될 수도 있다.

height: value

부모 위젯 내에 수신자의 높이를 'value'로 설정하라. 값은 정수값으로서 상대적으로 명시되므로, resize를 실행 시 부모의 현재 크기에 대한 'value'의 비율이 유지될 것이다. 이렇게 복잡한 메서드는 'rubber sheet' 기하도형 관리로 알려진다.

heightAbsolute

수신자의 부모 내에 위젯의 레이아웃을 강제로 재계산한 후 수신자의 현재 높이를 픽셀로 응답하라.

heightChild: child

주어진 자식의 높이를 응답하라. 해당 메서드의 기본 구현은 BWidget의 #height 메서드의 주석에 설명된 'rubber-sheet' 기하도형 관리를 이용한다. 자식의 #height: 메서드에 의해 자동으로 호출되는 해당 메서드를 사용해서는 안 되지만 이를 오버라이드하길 원할지도 모른다. 이름이 'Geom'으로 끝나는 자식의 프로퍼티 슬롯이 해당 메서드를 위해 예약된다. 해당 메서드는 절대 실패해선 안 된다 - 수신자가 실행하는 기하도형 관리 유형에 적용되지 않을 경우 단순히 0을 리턴하라.

heightOffset

Private - 수신자의 높이에 더하거나 그로부터 제해야 하는 픽셀을 #height: 메서드를 통해 상대적으로 설정된 값과 관련해 응답하라.

and

heightOffset: value

#height: 메서드를 통해 상대적으로 설정된 값과 관련해 고정된 'value' 픽셀 양만큼 수신자의 높이에 더하거나 제하라.

heightPixels: value

수신자의 현재 높이를 'value' 픽셀로 설정하라. 해당 메서드를 호출하고 나면 #height는 0을 응답하는데, 크기의 'variable' 부분이 존재하지 않는다는 사실을 고려하면 논리적이다 (상세한 설명은 #height와 #height:를 참조).

inset: pixels

수신자의 바인딩 박스를 명시된 양만큼 덧붙여라.

left: left top: top right: right bottom: bottom

수신자의 바인딩 박스를 그 구성요소들을 통해 설정하라.

pos: position

수신자의 원점을 position(Point 객체)에 포함된 너비와 높이로 설정하라.

posHoriz: aBlox

수신자를 aBlox의 바로 우측으로 위치시켜라.

posVert: aBlox

수신자를 aBlox의 바로 아래로 위치시켜라.

stretch: aBoolean

해당 메서드는 수신자로부터 그 최상위 수준까지 경로에 BContainer가 있을 때에만 사용된다. 이는 BContainer의 전체 너비를 채우기 위해 연장된 위젯들 중에 자식이 포함되는지를 결정한다.

width

부모 위젯 내에 수신자의 너비에서 'variable' 부분을 응답하라. 리턴된 값은 #widthOffset: 이 나타내는 고정 픽셀 양을 포함하지 않으며, 상대적으로 해석되어야 한다: resize를 실행 시 부모의 현재 크기에 대한 리턴값의 비율이 유지될 것이다. 이렇게 복잡한 메서드는 'rubber sheet' 기하도형 관리로 알려진다. 좌변이나 우변이 부모의 클라이언트 영역 내부에 있지 않을 경우 행위는 정의되지 않는다 - 창은 서로 맞물려 고정(clamped)되거나 명세(specification)에 따라 위치가 지정될 수도 있다.

width: value

부모 위젯 내에 수신자의 너비를 'value'로 설정하라. 값은 정수값으로서 상대적으로 명시되므로, resize를 실행 시 부모의 현재 크기에 대한 'value'의 비율이 유지될 것이다. 이렇게 복잡한 메서드는 'rubber sheet' 기하도형 관리로 알려진다.

width: xSize height: ySize

수신자의 크기를 그 구성요소 xSize와 ySize를 통해 설정하라.

widthAbsolute

수신자의 부모 내에 위젯의 레이아웃을 강제로 재계산한 후 수신자의 현재 너비를 픽셀로 응답하라.

widthChild: child

주어진 자식의 너비를 응답하라. 해당 메서드의 기본 구현은 BWidget의 #width 메서드의 주석에 설명된 'rubber-sheet' 기하도형 관리를 이용한다. 자식의 #width 메서드에 의해 자동으로 호출되는 해당 메서드를 사용해서는 안 되지만 이를 오버라이드하길 원할지도 모른다. 이름이 'Geom'으로 끝나는 자식의 프로퍼티 슬롯이 해당 메서드를 위해 예약된다. 해당 메서드는 절대 실패해선 안 된다 - 수신자가 실행하는 기하도형 관리 유형에 적용되지 않을 경우 단순히 0을 리턴하라.

widthOffset

Private - 수신자의 너비에 더하거나 그로부터 제해야 하는 픽셀을 #width: 메서드를 통해 상대적으로 설정된 값과 관련해 응답하라.

and

widthOffset: value

#width: 메서드를 통해 상대적으로 설정된 값과 관련해 고정된 'value' 픽셀 양만큼 수신자의 너비에 더하거나 제하라. 해당 메서드는 더 이상 사용되지 않는다; 대신 #insert: 와 BContainers를 사용하라.

widthPixels: value

수신자의 현재 너비를 'value' 픽셀로 설정하라. 해당 메서드를 호출하고 나면 #width는 0을 응답하는데, 크기의 'variable' 부분이 존재하지 않는다는 사실을 고려하면 논리적이다 (상세한 설명은 #width와 #width:를 참조).

x

부모 위젯 내에 수신자의 x에서 'variable' 부분을 응답하라. 리턴된 값은 -#xOffset: 이 나타내는 고정 픽셀 양을 포함하지 않으며, 상대적으로 해석되어야 한다: resize를 실행 시 부모의 현재 크기에 대한 리턴값의 비율이 유지될 것이다. 이렇게 복잡한 메서드는 'rubber sheet' 기하도형 관리로 알려진다. 좌변이나 우변이 부모의 클라이언트 영역 내부에 있지 않을 경우 행위는 정의되지 않는다 - 창은 서로 맞물려 고정(clamped)되거나 명세(specification)에 따라 위치가 지정될 수도 있다.

x: value

부모 위젯 내에 위젯의 x를 'value'로 설정하라. 값은 정수값으로서 상대적으로 명시되므로, resize를 실행 시 부모의 현재 크기에 대한 'value'의 비율이 유지될 것이다. 이렇게 복잡한 메서드는 'rubber sheet' 기하도형 관리로 알려진다.

x: xPos y: yPos

수신자의 원점을 그 구성요소 xPos와 yPos를 통해 설정하라.

x: xPos y: yPos width: xSize height: ySize

수신자의 바운딩 박스를 그 원점과 크기를 통해 설정하라.

xAbsolute

수신자의 부모 내에 위젯의 레이아웃을 강제로 재계산한 후 수신자의 현재 x를 픽셀로 응답하라.

xChild: child

주어진 자식의 x를 응답하라. 해당 메서드의 기본 구현은 BWidget의 #x 메서드의 주석에 설명된 'rubber-sheet' 기하도형 관리를 이용한다. 자식의 #x 메서드에 의해 자동으로 호출되는 해당 메서드를 사용해서는 안 되지만 이를 오버라이드하길 원할지도 모른다. 이름이 'Geom'으로 끝나는 자식의 프로퍼티 슬롯이 해당 메서드를 위해 예약된다. 해당 메서드는 절대 실패해선 안 된다 - 수신자가 실행하는 기하도형 관리 유형에 적용되지 않을 경우 단순히 0을 리턴하라.

xOffset

Private - 수신자의 x에 더하거나 그로부터 제해야 하는 픽셀을 #x: 메서드를 통해 상대적으로 설정된 값과 관련해 응답하라.

and

xOffset: value

#x: 메서드를 통해 상대적으로 설정된 값과 관련해 고정된 'value' 픽셀 양만큼 수신자의 x에 더하거나 제하라.

xPixels: value

수신자의 현재 x를 'value' 픽셀로 설정하라. 해당 메서드를 호출하고 나면 #x는 0을 응답하는데, 크기의 'variable' 부분이 존재하지 않는다는 사실을 고려하면 논리적이다 (상세한 설명은 #x와 #x:를 참조).

xRoot

데스크톱의 상단 좌측 모서리에 대한 수신자의 x 위치를 응답하라 (X에서 가상 루트 창의 오프셋도 포함).

y

부모 위젯 내에 수신자의 y에서 'variable' 부분을 응답하라. 리턴된 값은 -#yOffset: 이 나타내는 고정 픽셀 양을 포함하지 않으며, 상대적으로 해석되어야 한다: resize를 실행 시 부모의 현재 크기에 대한 리턴값의 비율이 유지될 것이다. 이렇게 복잡한 메서드는 'rubber sheet' 기하도형 관리로 알려진다. 좌변이나 우변이 부모의 클라이언트 영역 내부에 있지 않을 경우 행위는 정의되지 않는다 - 창은 서로 맞물려 고정(clamped)되거나 명세(specification)에 따라 위치가 지정될 수도 있다.

y: value

부모 위젯 내에 위젯의 y를 'value'로 설정하라. 값은 정수값으로서 상대적으로 명시되므로, resize를 실행 시 부모의 현재 크기에 대한 'value'의 비율이 유지될 것이다. 이렇게 복잡한 메서드는 'rubber sheet' 기하도형 관리로 알려진다.

yAbsolute

수신자의 부모 내에 위젯의 레이아웃을 강제로 재계산한 후 수신자의 현재 y를 픽셀로 응답하라.

yChild: child

주어진 자식의 y를 응답하라. 해당 메서드의 기본 구현은 BWidget의 #y 메서드의 주석에 설명된 'rubber-sheet' 기하도형 관리를 이용한다. 자식의 #y 메서드에 의해 자동으로 호출되는 해당 메서드를 사용해서는 안 되지만 이를 오버라이드하길 원할지도 모른다. 이름이 'Geom'으로 끝나는 자식의 프로퍼티 슬롯이 해당 메서드를 위해 예약된다. 해당 메서드는 절대 실패해선 안 된다 - 수신자가 실행하는 기하도형 관리 유형에 적용되지 않을 경우 단순히 0을 리턴하라.

yOffset

Private - 수신자의 y에 더하거나 그로부터 제해야 하는 픽셀을 #y: 메서드를 통해 상대적으로 설정된 값과 관련해 응답하라.

and

yOffset: value

#y: 메서드를 통해 상대적으로 설정된 값과 관련해 고정된 'value' 픽셀 양만큼 수신자의 y에 더하거나 제하라. 해당 메서드는 더 이상 사용되지 않는다; 대신 #insert: 와 BContainers를 사용하라.

yPixels: value

수신자의 현재 y를 'value' 픽셀로 설정하라. 해당 메서드를 호출하고 나면 #y는 0을 응답하는데, 크기의 'variable' 부분이 존재하지 않는다는 사실을 고려하면 논리적이다 (상세한 설명은 #y와 #y:를 참조).

yRoot

데스크톱의 상단 좌측 모서리에 대한 수신자의 y 위치를 응답하라 (X에서 가상 루트 창의 오프셋도 포함).


BLOX.BWidget: 위젯 프로토콜

activate

어느 주어진 시간에서든 각 디스플레이 상에 하나의 창만 포커스 창으로 지정된다; 디스플레이에 대한 키 누름이나 키 누름 해제 이벤트는 모두 해당 창으로 전송된다. 해당 메서드는 사용자가 수신자의 디스플레이에서 어떤 창에 포커스를 둘 것인지 선택하도록 해준다.

애플리케이션이 현재 수신자의 디스플레이 상에 입력 포커스를 가진 경우, 해당 메서드는 수신자의 디스플레이에 대한 입력 포커스를 수신자로 리셋한다. 애플리케이션이 현재 수신자의 디스플레이에 입력 포커스를 갖고 있지 않은 경우 Blox는 수신자를 그 최상위 수준에 대한 포커스로 기억할 것이다; 그리고 포커스가 다음에 최상위 수준으로 도달할 경우 수신자에게 다시 보내질 것이다 (대부분의 창 관리자는 포커스를 최상위 수준의 창으로 설정하고, 최상위 수준의 자식들 중 하나로 포커스를 다시 전송하는 일은 애플리케이션에게 맡기기 때문이다).

activateNext

포커스 'tabbing' 순서로 다음 위젯을 활성화하라. 포커스 순서는 위젯 생성 순에 따른다; #tabStop: 메서드를 이용해 어떤 위젯이 순서대로 되어 있는지 설정할 수 있다.

activatePrevious

포커스 'tabbing' 순서로 이전 위젯을 활성화하라. 포커스 순서는 위젯 생성 순에 따른다; #tabStop: 메서드를 이용해 어떤 위젯이 순서대로 되어 있는지 설정할 수 있다.

bringToTop

수신자를 발생시켜(raise) z 순으로 된 모든 자매(sibling) 위젯보다 위에 있도록 하라; 어떤 자매 위젯도 수신자를 흐릿하게 만들지 못할 것이며, 그것과 겹친 자매를 모두 흐릿하게 만들 것이다.

isActive

수신자가 현재 디스플레이에 대한 포커스를 소유하는 창인지 여부를 리턴하라.

sendToBack

수신자를 낮추어 위젯의 z-순서로 된 모든 자매 위젯보다 아래에 있도록 하라; 어떤 자매 위젯도 수신자를 흐릿하게 만들지 못할 것이며, 그것과 겹친 자매를 모두 흐릿하게 만들 것이다.


Notes