GnuSmalltalkUsersGuide:AdditionalChapter1 26
- BLOX.Blox
BLOX.Blox
네임스페이스 BLOX에 정의됨
슈퍼클래스: BLOX.BEventTarget
범주: 그래픽-윈도우
- 나는 모든 눈에 보이는 사용자 인터페이스 객체(이것과는 꽤 다른 캔버스 항목은 제외)를 위한 슈퍼클래스이다. 나는 내부적 사용을 위한 단순한 Tcl 인터페이스를 비롯해 공통 메서드를 제공한다. 게다가 나는 많은 흥미로운 이벤트 처리 일을 실행하는 클래스 메서드를 제시한다.
주목: 메서드 중 일부는 (특히 geometry 메서드) 모든 Blox 서브클래스에는 적절하지 않을 수도 있으며, 1.1.5 BLOX에 대한 이전 버전과의 호환성 때문에 포함될 수도 있다. BWidget의 서브클래스에만 geometry 메서드를 사용해야 한다.
BLOX.Blox 클래스: C call-outs
evalIn: interp tcl: cmd
해당 설명 없음.
idle
해당 설명 없음.
resultIn: interp
해당 설명 없음.
tclInit
해당 설명 없음.
BLOX.Blox 클래스: 이벤트 디스패치
balances
dispatchEvents
가장 바깥쪽의 루프가 시작된 것이라면 #terminateMainLoop로의 호출 횟수가 #dispatchEvents로의 호출 횟수와 균형이 맞을 때까지 이벤트를 디스패치하라; 가장 바깥쪽 루프가 시작된 것이 아니라면 즉시 리턴하라.
dispatchEvents: mainWindow
일부 이벤트를 디스패치하라; 'mainWindow' 위젯이 (일종의 BWidget가 될 수 있지만 일반적으로 BWindow가 될 것이다) 파기 시 리턴하라.
balances
terminateMainLoop
#terminateMainLoop로의 해당 호출이 #dispatchEvents로의 호출 횟수와 균형이 맞을 경우 이벤트 디스패칭 루프를 종료하라.
update: aspect
Tcl와 Blox 환경을 초기화하라; 시작 시 자동으로 실행된다.
BLOX.Blox 클래스: 인스턴스 생성
new
이 클래스의 인스턴스를 대상으로 해당 메서드를 호출해서는 안 된다.
new: parent
수신자에 의해 식별된 타입의 새 위젯을 주어진 부모 위젯 내부에 생성하라. 새 위젯을 응답하라.
BLOX.Blox 클래스: 유틸리티
active
현재 활성화된 Blox를 응답하고, 포커스가 스몰토크 창(Smalltalk window)에 속하지 않는 경우 nil을 응답하라.
at: aPoint
화면에 주어진 포인트를 포함하는 Blox를 응답하고, 어떤 Blox도 주어진 포인트를 포함하지 않는 경우 nil을 응답하라 (어떤 스몰토크 창도 존재하지 않거나 다른 창이 가리고 있는 이유로 인해).
atMouse
마우스 커서의 핫스팟 아래에 있는 Blox를 응답하고, 어떤 Blox도 주어진 포인트를 포함하지 않는 경우 nil을 응답하라 (어떤 스몰토크 창도 존재하지 않거나 다른 창이 가리고 있는 이유로 인해).
beep
벨(bell)을 생성하라.
clearClipboard
클립보드 내용을 제거하고 기존의 내용을 응답하라.
clipboard
클립보드에 텍스트를 검색하라.
clipboard: aString
클립보드의 내용을 aString으로 설정하라 (aString이 nil인 경우 클립보드를 비워라).
createColor: red green: green blue: blue
'backgroundColor'와 같이 메서드로 전달 가능한 색상을 응답하라. 색상은 주어진 RGB 구성요소를 갖게 될 것이다 (범위는 0~65535이다).
createColor: cyan magenta: magenta yellow: yellow
'backgroundColor'와 같이 메서드로 전달 가능한 색상을 응답하라. 색상은 주어진 CMY 구성요소를 갖게 될 것이다 (범위는 0~65535이다).
createColor: cyan magenta: magenta yellow: yellow black: black
'backgroundColor'와 같이 메서드로 전달 가능한 색상을 응답하라. 색상은 주어진 CMYK 구성요소를 갖게 될 것이다 (범위는 0~65535이다).
createColor: hue saturation: sat value: value
'backgroundColor'와 같이 메서드로 전달 가능한 색상을 응답하라. 색상은 주어진 HSV 구성요소를 갖게 될 것이다 (범위는 0~65535이다).
defaultFont
Blox에 의해 사용되는 기본 폰트를 응답하라.
fonts
시스템 내 글꼴 집합 이름을 응답하라. 또한 'Times,' 'Courier', 'Helvetica'는 항상 이용 가능하다.
mousePointer
마우스 포인터가 애플리케이션의 창과 같은 화면에 있는 경우, 화면 루트 창에 픽셀로 측정된 포인터의 x와 y 좌표를 포함한 Point를 리턴한다 (X에서 만일 가상 루트 창이 화면에서 사용 중인 경우 위치는 현재 보이는 부분의 상단 좌측 모서리에 비교한 것이 아니라 전체 데스크탑에서 계산된다). 마우스 포인터가 창과 같은 화면에 있지 않은 경우 nil을 응답하라.
platform
Blox가 실행 중인 플랫폼을 응답하라; #unix, -#macintosh, #windows 중 하나가 가능하다.
screenOrigin
애플리케이션의 창이 그려진 가상 루트 창에서 화면의 윗쪽 좌측 포인터의 좌표를 나타내는 Point를 응답하라 (Windows와 Macintosh에서는 항상 0@0가 된다).
screenResolution
해상도를 화면의 인치당 도트 수로 포함하는 Point를 x와 y 방향으로 응답하라.
screenSize
애플리케이션의 창이 그려지는 가상 루트 창의 크기를 포함한 Point를 응답하라 (Windows와 Macintosh에서는 화면의 크기에 해당).
BLOX.Blox: 접근하기
state
위젯에 대한 상태 옵션의 값을 응답하라.
버튼에 대해 세 가지 상태 중 하나를 명시한다: 일반, 활성화, 비활성화. 일반 상태에서는 버튼이 foreground와 background 옵션을 이용해 표시된다. 활성화 상태는 주로 포인터가 버튼 위에 있을 때 사용된다. 활성화 상태에서 버튼은 activeForeground와 activeBackground 옵션을 이용해 표시된다. 비활성화 상태는 버튼이 인식하지 못함을 의미한다: 애플리케이션은 위젯의 활성화를 거부하고, 마우스 버튼 누름을 무시할 것이다.
state: value
위젯에 대한 상태 옵션의 값을 설정하라.
버튼에 대해 세 가지 상태 중 하나를 명시한다: 일반, 활성화, 비활성화. 일반 상태에서는 버튼이 foreground와 background 옵션을 이용해 표시된다. 활성화 상태는 주로 포인터가 버튼 위에 있을 때 사용된다. 활성화 상태에서 버튼은 activeForeground와 activeBackground 옵션을 이용해 표시된다. 비활성화 상태는 버튼이 인식하지 못함을 의미한다: 애플리케이션은 위젯의 활성화를 거부하고, 마우스 버튼 누름을 무시할 것이다.
BLOX.Blox: 기본
deepCopy
서로 다른 객체들 간 데이터를 비일관되게 만들기 때문에 복사본을 생성하는 것은 말이 되지 않는다; 따라서 수신자를 응답하라.
release
아직 존재할 경우 수신자를 파괴한 후 의존성 링크(dependency link)를 제거하는 일반적인 작업을 실행하라.
shallowCopy
서로 다른 객체들 간 데이터를 비일관되게 만들기 때문에 복사본을 생성하는 것은 말이 되지 않는다; 따라서 수신자를 응답하라.
BLOX.Blox: 자식 생성하기
make: array
수신자의 자식들을 생성하라. 자식들의 Dictionary를 응답하라. 배열의 각 요소는 다음을 포함한 Array에 해당한다: Dictionary의 키가 되는 문자열, 클래스명을 식별하는 #{Blox.BWindow} 와 같은 바인딩, 설정되어야 할 매개변수가 있는 배열 (예: #(#width: 50 #height: 30 #backgroundColor: 'blue')), 이후에는 같은 포맷의 배열로 설명되는 위젯의 자식들까지.
make: array on: result
Private - 수신자의 자식들을 생성하여 결과에 추가하라; 결과를 리턴하라. 배열은 #make: 에 관한 주석에 설명된 포맷을 갖는다.
makeChild: each on: result
Private - 수신자의 자식들을 생성하여 결과에 추가하라; 결과를 리턴하라. 배열은 #make: 에 관한 주석에 설명된 포맷을 갖는다.
BLOX.Blox: 맞춤설정
addChild: child
자식에 의해 식별된 위젯이 수신자에게 추가되었다. 해당 메서드가 public한 이유는 당신이 그것을 호출할 수 있어서가 아니라 오버라이드가 유용하기 때문이고, 방금 추가된 자식들에 대해 일부 초기화를 실행하기 위해 #basicAddChild: 또는 슈퍼클래스 구현부로 호출해야 함을 잊어버리지 않기 때문이다. 새 자식(child)을 응답하라.
basicAddChild: child
자식에 의해 식별된 위젯이 수신자에게 추가되었다. 이것을 자식 컬렉션에 추가하고 새 자식을 응답하라. 해당 메서드가 public한 이유는 당신이 #addChild: 로부터 호출할 수 있기 때문이다.
BLOX.Blox: 위젯 프로토콜
asPrimitiveWidget
수신자를 구현하는 프리미티브 위젯을 응답하라.
childrenCount
수신자가 얼마나 많은 자식을 갖고 있는지 응답하라.
childrenDo: aBlock
수신자의 자식 위젯마다 aBlock을 한 번씩 평가하고, 위젯을 매개변수로서 aBlock으로 전달하라.
destroy
수신자를 파기하라.
drawingArea
수신자의 그림 영역을 식별하는 Rectangle을 응답하라. 사각형의 모서리는 클라이언트 영역의 상단 좌측과 하단 우측 모서리를 명시한다. 좌표는 창의 그림 영역의 상단 좌측 모서리에 상대하므로 사각형의 모서리 좌표는 (0,0)이다.
enabled
수신자가 입력이 가능한지 응답하라. 이 곳에 정의되어 있긴 하지만 해당 메서드는 #state 메서드를 정의하는 위젯에만 사용된다.
enabled: enabled
수신자가 입력이 가능한지 설정하라 (enabled는 boolean이다). 이 곳에 정의되어 있긴 하지만 해당 메서드는 #state: 메서드를 정의하는 위젯에만 사용된다.
exists
수신자가 파기되었는지 여부를 응답하라 (파기된 경우 false, 파기되지 않은 경우 true를 응답하라).
fontHeight: aString
aString가 수신자와 같은 폰트로 표시될 때 aString의 높이를 픽셀로 응답하라. 이 곳에 정의되어 있긴 하나 해당 메서드는 #font 메서드를 정의하는 위젯에만 사용된다.
fontWidth: aString
aString가 수신자와 같은 폰트로 표시될 때 aString의 너비를 픽셀로 응답하라. 이 곳에 정의되어 있긴 하나 해당 메서드는 #font 메서드를 정의하는 위젯에만 사용된다.
isWindow
수신자가 화면 상에 창을 나타내는지 여부를 응답하라.
parent
수신자의 부모를 응답하라 (최상위 수준 창일 경우 nil).
toplevel
수신자에 연결된 최상위 수준 객체를 응답하라 (보통 BWindow 또는 BPopupWindow).
window
수신자가 머무르는 창을 응답하라. #toplevel은 BTransientWindow를 응답하지 않지만 이 메서드는 가능함을 주목한다.
withChildrenDo: aBlock
aBlock을 평가해 수신자를 전달한 후, 수신자의 자식 위젯마다 한 번씩 평가하라.