FoundationsofGTKDevelopment:Appendix B

From 흡혈양파의 번역工房
Jump to navigation Jump to search
부록 B GTK+ 시그널

GTK+ 시그널

GTK+는 시그널과 콜백 함수에 의존하는 시스템이다. 시그널은 사용자가 특정 액션을 실행했음을 애플리케이션에게 알리는 것이다. 시그널이 발생하면 개발자는 GTK+로 콜백 함수라 불리는 함수를 실행할 것을 알릴 수 있다.


시그널을 연결하기 위해서는 g_signal_connect()를 이용할 수 있다. 이 함수는 네 개의 매개변수를 수락한다. 첫 번째는 시그널을 감시하는 GObject다. 두 번째 매개변수 signal_name은 시그널을 나타내는 문자열로, 시그널명의 리스트는 이 부록을 통해 찾아볼 수 있다.

gulong g_signal_connect (gpointer object,
        const gchar *signal_name,
        GCallback handler,
        gpointer data);


세 번째 매개변수는 시그널이 발생할 때 호출되는 콜백 함수명이다. 각 콜백 함수에 대한 형태는 GTK+ API 문서에서 찾을 수 있다. 하지만 함수 프로토타입 중 다수는 문서가 완전하지 않으므로 비표준 매개변수에 대한 정보는 이 부록의 시그널 참조 표에서 찾을 수 있다.


g_signal_connect()의 마지막 매개변수는 콜백 함수로 임의의 포인터 타입의 데이터를 전송할 수 있도록 해준다. 이는 gpointer는 C의 void 포인터 타입과 동일하기 때문에 가능한 일이다.


객체와 데이터 매개변수의 순서가 바뀐다는 점만 제외하면 g_signal_connect()와 동일하게 작용하는 g_signal_connect_swapped()를 이용할 수도 있다. 이는 데이터 매개변수 포인터에서 함수를 호출하도록 해준다.


이 부록에서는 GTK+ 객체와 위젯에서 이용 가능한 이벤트와 시그널의 전체 리스트를 제공한다. 첫 번째 절은 GtkWidget과 파생 클래스에서 이용할 수 있는 GDK 이벤트 타입에 관한 정보를 제공하고자 한다. 그 다음으로 GTK+ 에서 시그널을 가진 객체에 대한 설명과 모든 시그널명의 리스트를 제공한다.


이벤트

이벤트는 X Windows System이 발생시키는 특별한 타입의 시그널이다. 우선 시그널이 발생하면 GLib가 제공하는 시그널 시스템에 의해 해석되도록 창 관리자로부터 자신의 애플리케이션으로 전송된다.


이를 통해 우리는 일반 시그널과 동일한 시그널 연결 및 콜백 함수 메서드를 사용할 수 있다. 한 가지 차이가 있다면 이벤트 콜백 함수는 gboolean 값을 리턴한다는 점이다. TRUE를 리턴할 경우 어떤 액션도 발생하지 않을 것이다. 반대로 FALSE를 리턴하면 GTK+는 이벤트를 계속해서 처리할 것이다.

시그널명 GdkEventType 값 설명
delete-event GDK_DELETE 창 관리자가 최상위 수준의 창을 소멸할 것을 요청하였다. 창이 삭제되었는지 확인할 때 사용할 수 있다.
destroy-event GDK_DESTROY 위젯의 GdkWindow가 소멸되었다. 위젯은 주로 시그널이 발생되기 전에 연결 해제되므로 이 시그널을 사용해서는 안 된다.
expose-event GDK_EXPOSE 위젯의 새로운 일부가 표시되었으며 그릴 필요가 있다. 창이 이전에 다른 객체에 의해 가려진 경우 발생한다.
motion-notify-event GDK_MOTION_NOTIFY 위젯 주위영역(proximity)에서 마우스 커서가 이동하였다.
button-press-event GDK_BUTTON_PRESS 마우스 버튼이 한 번 클릭되었다. GDK_2BUTTON_PRESS와 GDK_3BUTTON_PRESS 이벤트를 따라 발생하였다.
button-press-event GDK_2BUTTON_PRESS 마우스 버튼이 두 번 클릭되었다. 이 또한 GDK_BUTTON_PRESS를 발생시키므로 개발자는 콜백 함수에서 이벤트 타입을 확인해야 한다. button-press-event GDK_3BUTTON_PRESS 마우스 버튼이 세 번 클릭되었다. 이 또한 GDK_BUTTON_PRESS를 발생시키므로 개발자는 콜백 함수에서 이벤트 타입을 확인해야 한다.
button-release-event GDK_BUTTON_RELEASE 앞서 클릭한 마우스 버튼이 해제되었다.
key-press-event GDK_KEY_PRESS 키보드 키가 눌러졌다. 키 누름으로 인해 텍스트가 입력되거나 액션이 취해지는 것을 막기 위해서는 TRUE를 리턴한다.
key-release-event GDK_KEY_RELEASE 앞서 누른 키보드 키가 해제되었다. 보통 key-press-event처럼 유용하진 않다.
enter-notify-event GDK_ENTER_NOTIFY 마우스 커서가 위젯의 주위영역으로 들어갔다.
leave-notify-event GDK_LEAVE_NOTIFY 마우스 커서가 위젯의 주위영역에서 벗어났다.
focus-in-event GDK_FOCUS_CHANGE 키보드 포커스가 창의 다른 위젯에서 해당 위젯으로 들어갔다.
focus-out-event GDK_FOCUS_CHANGE 키보드 포커스가 창 내의 다른 위젯으로 떠났다.
configure-event GDK_CONFIGURE 위젯의 크기, 위치, 쌓는(stacking) 순서가 변경되었다. 보통 위젯에 새로운 크기가 할당될 때 발생한다.
map-event GDK_MAP 위젯이 디스플레이 위에 매핑되었다. 위젯이 실현되었음을 의미하기도 한다.
unmap-event GDK_UNMAP 위젯이 디스플레이에서 매핑 해제되었다.
property-notify-event GDK_PROPERTY_NOTIFY 위젯의 프로퍼티가 변경되거나 삭제되었다. GObject가 저장한 구체적인 위젯 프로퍼티의 변경내용을 추적 시 이 시그널을 이용할 수 있다.
selection-clear-event GDK_SELECTION_CLEAR 애플리케이션이 더 이상 선택내용에 대한 소유권을 갖고 있지 않으므로 삭제되어야 한다.
selection-request-event GDK_SELECTION_REQUEST 위젯의 선택내용이 다른 애플리케이션에서 요청되었다.
selection-notify-event GDK_SELECTION_NOTIFY 선택내용의 소유주가 선택내용의 변환 요청에 응답하였다.
proximity-in-event GDK_PROXIMITY_IN 터치화면의 펜과 같은 입력 장치가 감지 표면(sensing surface)과 접촉되었다.
proximity-out-event GDK_PROXIMITY_OUT 터치화면의 펜과 같은 입력 장치와 감지 표면의 접촉이 끊겼다.
event GDK_DRAG_ENTER 드래그 액션이 진행 중일 때 마우스 포인터가 위젯으로 들어왔다.
event GDK_DRAG_LEAVE 드래그 액션이 진행 중일 때 마우스 포인터가 위젯에서 벗어났다.
event GDK_DRAG_MOTION 드래그 액션이 진행 중일 때 마우스 포인터가 위젯 내에서 이동하였다.
event GDK_DRAG_STATUS 드래그 액션의 현재 상태가 변경되었다.
event GDK_DROP_START 위젯에서 드롭 액션이 시작되었다.
event GDK_DROP_FINISHED 위젯에서 드롭 액션이 완료되었다.
client-event GDK_CLIENT_EVENT 다른 애플리케이션으로부터 위젯에 대한 이벤트가 수신되었다.
visibility-notify-event GDK_VISIBILITY_NOTIFY 위젯의 가시성(visibility)이 변경되었다. 예를 들어, 위젯의 일부분이 가려지거나 개방되었다.
no-expose-event GDK_NO_EXPOSE 그리기 가능한 영역의 일부가 복사되었을 때 소스 부분(source region)을 모두 이용할 수 있었다.
scroll-event GDK_SCROLL 위젯이 한 방향으로 스크롤되었다. 이는 위젯의 시각적 영역을 업데이트하도록 해준다.
window-state-event GDK_WINDOW_STATE 위젯의 상태가 변경되었다. 위젯이 최상위 수준의 창인 경우, 위젯이 최소화 혹은 최대화되거나, sticky로 만들어지거나, 아이콘으로 만들어질 때 이런 일이 발생할 수 있다.
event GDK_SETTING 위젯에 대한 설정이 추가, 제거, 또는 수정되었다.
event GDK_OWNER_CHANGE 위젯의 소유자가 변경되었다. 이 이벤트는 GTK+ 2.6 버전에서 소개되었다.
grab-broken-event GDK_GRAB_BROKEN 위젯이 포인터 또는 키보드에 의해 잡혔으나(grab) 깨졌다. 이는 창이 안보이거나(invisible) 사용자가 반복하여 잡기를 시도할 때 발생할 수 있다. 이 이벤트는 GTK+ 2.8 버전에서 소개되었다.
표 B-1. GtkWidget 이벤트 타입


위젯 시그널

표 B-2부터 B-69까지는 GTK+에서 시그널을 가진 각 클래스에 관련된 시그널을 모두 제공한다. 시그널명이 표준 시그널 프로토타입을 따르지 않으면 추가 매개변수를 열거하였는데, 이러한 추가적 매개변수는 객체 자체와 사용자 데이터 포인터를 포함하지 않는다.

시그널명 설명
activate 연관된 메뉴 또는 툴바 항목이 트리거되었다.
표 B-2. GtkAction 시그널


시그널명 추가 매개변수 설명
connect-proxy GtkAction *action
GtkWidget *proxy
GtkAction 객체와 연관된 위젯 간에 프로퍼티를 동기화하는 데에 사용되는 프록시가 추가되었다.
disconnect-proxy GtkAction *action
GtkWidget *proxy
GtkAction 객체와 연관된 위젯 간에 프로퍼티를 동기화하는 데에 사용되는 프록시가 제거되었다.
post-activate GtkAction *action 시그널이 발생한 후에 액션 그룹에 포함된 액션이 활성화되었다.
pre-activate GtkAction *action 이 시그널이 발생한 후에 액션 그룹에 포함된 액션이 활성화될 것이다.
표 B-3. GtkActionGroup 시그널


시그널명 설명
changed value 프로퍼티를 제외하고 하나 또는 그 이상의 조정의 프로퍼티가 변경되었다.
value-changed 조정의 value 프로퍼티가 변경되었다.
표 B-4. GtkAdjustment 시그널


시그널명 추가 매개변수 설명
apply None GtkAssistant 페이지에서 Apply 버튼 또는 Forward 버튼이 클릭되었다.
cancel None GtkAssistant 페이지에서 Cancel 버튼이 클릭되었다.
close None GtkAssistant의 마지막 페이지에서 Close 버튼 또는 Apply 버튼이 클릭되었다.
prepare GtkWidget *page 새로운 페이지가 표시되기 직전이다. 이 시그널은 페이지가 사용자에게 표시되기 전에 개발자가 원하는 준비 작업을 실행할 수 있도록 확보하기 위해 발생되었다.
표 B-5. GtkAssistant 시그널


시그널명 설명
activate 이 시그널은 버튼을 애니메이션으로 만드는 데에 사용된다. 이 시그널로 절대 연결해선 안 된다! 대신 clicked 시그널을 사용하라.
clicked 버튼이 클릭 또는 클릭 해제되었다.
표 B-6. GtkButton 시그널


시그널명 설명
day-selected 사용자가 캘린더에서 일자를 선택하였다.
day-selected-double-click 사용자가 더블 클릭하여 일자를 선택하였다. 보완용(supplementary) 위젯이 존재할 경우 그 위젯들을 강제로 업데이트하는 데에 사용한다.
month-changed 사용자가 화살표 버튼 중 하나를 이용해 캘린더에서 새로운 월을 선택하였다.
next-month 표시된 월이 증가하였다. 사용자가 월을 수동으로 변경할 때에만 호출될 것이다.
next-year 표시된 연도가 증가하였다. 사용자가 연도를 수동으로 변경할 때에만 호출될 것이다.
prev-month 표시된 월이 감소하였다. 사용자가 월을 수동으로 변경할 때에만 호출될 것이다.
prev-year 표시된 연도가 감소하였다. 사용자가 연도를 수동으로 변경할 때에만 호출될 것이다.
표 B-7. GtkCalendar 시그널


시그널명 설명
editing-done 사용자가 셀의 텍스트 내용 편집을 완료하였다. 이 시그널은 셀 렌더러에게 그 값을 업데이트할 것을 알린다.
remove-widget 셀이 편집을 완료하였으므로 이제 텍스트 편집 위젯을 소멸시킬 수 있다.
표 B-8. GtkCellEditable 시그널


시그널명 추가 매개변수 설명
editing-canceled None 사용자가 셀의 편집을 취소하기로 선택했다. Escape 키를 누르는 등의 상황에서 발생하도록 설정할 수 있다.
editing-started GtkCellEditable *editable
gchar *path
셀이 편집 가능하게 되었다. 이 시그널을 이용해 셀 내용에 연관된 기본 타입이 아닌 다른 타입으로 된 편집 위젯을 추가할 수 있다.
표 B-9. GtkCellRenderer 시그널


시그널명 추가 매개변수 설명
accel-cleared gchar *path_string 가속기가 셀에서 제거되었다. 셀은 기본 텍스트 타입으로 리셋되어 셀이 비었다거나 기본 값으로 리턴해야 함을 사용자에게 알려야 한다.
accel-edited gchar *path_string
guint accel_key
GdkModifierType accel_mods
사용자가 선택한 가속기가 변경되었다. 콜백 함수는 새로운 선택내용을 즉시 적용하기에 충분한 정보를 제공한다.
표 B-10. GtkCellRendererAccel 시그널


시그널명 추가 매개변수 설명
edited gchar *path_string
gchar *new_text
렌더러의 텍스트 내용이 변경되엇다. 콜백 함수는 셀의 경로와 셀의 새로운 내용을 수신한다.
표 B-11. GtkCellRendererText 시그널


시그널명 추가 매개변수 설명
toggled gchar *path_string 셀이 활성화 또는 비활성화되었다. 렌더러를 라디오 버튼으로 표시하도록 설정할 경우 처음에 활성화되었던 렌더러를 업데이트해야 할 것이다.
표 B-12. GtkCellRendererToggle 시그널


시그널명 설명
toggled 체크 박스의 상태가 변경되었다. 현재 상태를 알아내기 위해서는 GtkCheckMenuItem 클래스의 active 프로퍼티를 확인해야 할 것이다.
표 B-13. GtkCheckMenuItem 시그널
시그널명 설명
color-set 사용자가 새로운 색상을 선택하였다. 색상을 프로그램적으로 변경하면 이 시그널이 발생하지 않을 것이다! 모든 변경내용을 확인하기 위해서는 GtkColorButton의 color와 alpha 프로퍼티를 추적해야 할 것이다.
표 B-14. GtkColorButton 시그널


시그널명 설명
color-changed 선택된 색상이 변경되었다. 사용자가 또는 코드에서 이러한 변경을 실행된 경우 해당 시그널이 발생한다.
표 B-15. GtkColorSelection 시그널


시그널명 설명
changed 사용자가 리스트에서 다른 항목을 선택하였거나, 개발자의 코드가 gtk_combo_box_set_active_iter()를 호출하였다. 이 시그널은 사용자가 GtkComboBoxEntry로 타이핑 시에도 발생한다.
표 B-16. GtkComboBox 시그널


시그널명 추가 매개변수 설명
add GtkWidget *child 자식 위젯이 컨테이너로 추가 또는 패킹되었다. gtk_container_add()를 명시적으로 호출하지 않았지만 위젯의 내장된 패킹 함수를 사용하더라도 이 시그널이 발생한다.
check-resize None 자식 위젯이 추가되기 전에 컨테이너의 크기를 조정할 필요가 있는지 검사하였다.
remove GtkWidget *child 자식 위젯이 컨테이너로부터 제거되었다.
set-focus-child GtkWidget *child 컨테이너의 자식 위젯이 창 관리자로부터 포커스를 받았다.
표 B-17. GtkContainer 시그널


시그널명 설명
curve-type-changed gtk_curve_set_gamma(), gtk_curve_reset(), gtk_curve_set_curve_type()중 하나가 호출되었다.
표 B-18. GtkCurve 시그널
시그널명 추가 매개변수 설명
close None GtkDialog 객체가 닫혔다.
response gint response 대화상자가 삭제(delete) 이벤트를 수신하였거나 개발자가 gtk_dialog_response()를 호출하여 GtkDialog의 액션 영역 내 버튼이 활성화되었다. 삭제 이벤트들은 GTK_RESPONSE_NONE의 응답 식별자가 발생하도록 야기한다. 그 외의 경우, 응답 식별자는 이미 정의되어 있을 것이다.
표 B-19. GtkDialog 시그널


시그널명 추가 매개변수 설명
changed None 사용자가 편집 가능한 위젯의 내용을 변경하였다.
delete-text gint start_pos
gint end_pos
위젯 내 두 개의 위치 사이의 텍스트를 사용자가 삭제하였다.
insert-text gchar *new_text
gint text_length
gint *position
위젯 내 주어진 위치에 사용자가 텍스트를 삽입하였다.
표 B-20. GtkEditable 시그널


시그널명 추가 매개변수 설명
activate None GtkEntry 위젯에 포커스가 있을 때 Enter 키가 눌러졌다. 활성화되면 개발자는GtkEntry 와 연관된 대화상자의 기본 버튼을 실행해야 한다.
backspace None Backspace 키가 눌러졌다. 커서 좌측에 문자가 있을 경우 모두 삭제된다.
copy-clipboard None 선택된 텍스트가 클립보드로 복사되었다.
cut-clipboard None 선택된 텍스트가 클립보드로 복사된 후 GtkEntry 위젯으로부터 제거되었다.
delete-from-cursor GtkDeleteType type
gint num_deletions
텍스트가 커서 주위에서 삭제되었다.
insert-at-cursor gchar *new_text 텍스트가 커서의 위치에 삽입되었다.
move-cursor GtkMovementStep step
gint num_steps
gboolean extended
커서가 특정 거리만큼 이동하였다. 콜백 함수는 선택내용이 확장되었는지 여부를 수신한다.
paste-clipboard None 클립보드의 텍스트가 GtkEntry로 삽입되었다.
populate-popup GtkMenu *popup_menu 사용자가 오른쪽 마우스 버튼을 클릭해 팝업 메뉴가 표시되었다.
toggle-overwrite None 덮어쓰기(overwrite) 프로퍼티를 토글하기 위해 Insert 키가 눌러졌거나, 프로퍼티가 명시적으로 변경되었다.
표 B-21. GtkEntry 시그널


시그널명 추가 매개변수 설명
action-activated gint index 주어진 index의 액션 항목이 팝업 리스트에서 선택되었다.
insert-prefix gchar *prefix GtkEntryCompletion이 제공한 자동 완성 기능이 활성화되었다. 이는 위젯이 표시하는 기본 접두사를 변경하도록 해준다.
match-selected GtkTreeModel *model
GtkTreeIter *match
사용자가 항목의 리스트에서 매치를 선택하였고, 이는 주어진 GtkTreeModel에 의해 정의된다.
표 B-22. GtkEntryCompletion 시그널


시그널명 설명
activate 익스팬더가 토글되었다. 위젯이 확장되거나 축소될 때 모두 이 시그널이 발생한다.
표 B-23. GtkExpander 시그널


시그널명 설명
confirm-overwrite 사용자가 이미 존재하는 파일명으로 파일을 저장하길 원한다. 개발자는 사용자의 선택을 수락하려면 GTK_FILE_CHOOSER_CONFIRMATION_ACCEPT_FILENAME을, 덮어쓸 것인지 확인하는 기본 대화상자를 표시하려면 GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM을, 사용자가 다른 이름을 선택하도록 하려면 GTK_FILE_CHOOSER_CONFIRMATION_SELECT_AGAIN을 리턴해야 한다.
current-folder-changed GtkFileChooser가 표시하는 현재 폴더가 변경되었다. 사용자가 폴더를 변경하거나, 북마크가 클릭되거나, 함수 호출이 명시적으로 폴더를 변경하는 경우를 예로 들 수 있겠다.
file-activated 사용자가 리스트에서 파일을 더블 클릭하거나 Enter 키를 눌렀다. 주로 GtkFileChooserDialog에 의해 내부적으로만 사용된다.
selection-changed 선택된 파일이 GtkFileChooser 내에서 변경되었다. 마우스 또는 키보드가 선택내용을 변경하거나 코드가 선택내용을 명시적으로 변경하는 경우를 예로 들 수 있겠다.
update-preview 사용자가 어떤 액션을 실행하였으므로 파일 선택자에서 미리보기 위젯이 재생성되어야 한다. 파일 선택자에 미리보기 위젯이 있을 경우 이 시그널을 사용할 필요가 있다.
표 B-24. GtkFileChooser 시그널


시그널명 설명
font-set 사용자가 새로운 글꼴을 선택하였다. 글꼴을 명시적으로 변경할 때는 이 시그널이 발생하지 않는다. 글꼴의 변경내용을 모두 감시하기 위해서는 GtnFontButton의 font-name 프로퍼티에서 notify 시그널을 사용할 필요가 있다.
표 B-25. GtkFontButton 시그널


시그널명 추가 매개변수 설명
child-attached GtkWidget *child 핸들 박스가 메인 창에 다시 붙었다.
child-detached GtkWidget *child 핸들 박스가 메인 창에서 다시 분리되었다.
표 B-26. GtkHandleBox 시그널


시그널명 추가 매개변수 설명
activate-cursor-item None 아이콘이 추가될 때 사용자가 Enter 키를 눌렀다.
item-activated GtkTreePath *path 사용자가 아이콘 항목을 더블 클릭하였거나 Enter 키를 눌렀다. gtk_icon_view_item_activated()를 호출하면 이 시그널을 강제로 발생시킬 수 있다.
move-cursor GtkMovementStep step
gint num_steps
사용자가 마우스 커서와 다른 아이콘을 선택하였다. Up, Down, Ctrl+P, Ctrl+N, Home, End, Page Up, Page Down, Right, Left 키 또는 몇 개의 Shift 및Ctrl 키의 조합으로 이루어진다.
select-all None 키보드에 Ctrl+A를 눌러서 모든 항목이 선택되었다.
select-cursor-item None 사용자가 키보드에 스페이스 바를 눌러 아이콘 항목을 선택하였다.
selection-changed None 선택된 아이콘이 사용자 액션 또는 애플리케이션에 의한 호출로 인해 변경되었다.
set-scroll-adjustments GtkAdjustment *hadj
GtkAdjustment *vadj
GtkIconView의 스크롤 조정이 변경되었다.
toggle-cursor-item None 사용자가 키보드에 Ctrl+스페이스 바를 눌렀다.
unselect-all None 사용자가 키보드에 Ctrl+Shift+A를 눌러 모든 아이콘 항목이 선택 해제되었다.
표 B-27. GtkIconView 시그널


시그널명 추가 매개변수 설명
commit gchar *str 애플리케이션이 문자열을 표시할 준비가 되었다.
delete-surrounding gint offset
gint delete_chars
입력 방식이 컨텍스트 텍스트를 삭제할 필요가 있다. 시그널이 처리되었다면 TRUE를 리턴되어야 한다.
preedit-changed None 사전에 편집된(preedited) 텍스트가 변경되었다.
preedit-end None 사전에 편집된 텍스트 변경이 완료되었다.
preedit-start None 사전에 편집된 텍스트 변경이 시작되었다.
retrieve-surrounding None 입력 방식이 커서를 둘러싼 컨텍스트에 대해 알 필요가 있다. gtk_im_context_set_surrounding()을 이용해 주변 컨텍스트를 설정 시 이 시그널을 이용하고, 성공적으로 처리되면 TRUE를 리턴한다.
표 B-28. GtkIMContext 시그널


시그널명 추가 매개변수 설명
disable-device GdkDevice *deviceid 사용자가 입력 장치 모드를 GDK_MODE_SCREEN 또는 GDK_MODE_WINDOW에서 GDK_MODE_DISABLED로 변경하였다.
enable-device GdkDevice *deviceid 사용자가 입력 장치 모드를 GDK_MODE_DISABLED에서 GDK_MODE_SCREEN 또는 GDK_MODE_WINDOW로 변경하였다.
표 B-29. GtkInputDialog 시그널


시그널명 설명
deselect 사용자가 GtkItem 위젯을 선택해제하였거나, gtk_item_deselect()가 호출되었다.
select 사용자가 GtkItem 위젯을 선택하였거나, gtk_item_select()가 호출되었다.
toggle 사용자가 GtkItem 위젯을 토글하였거나, or gtk_item_toggle()가 호출되었다.
표 B-30. GtkItem 시그널


시그널명 추가 매개변수 설명
copy-clipboard None 텍스트가 GtkLabel 위젯으로부터 GtkClipboard로 복사되었다. GtkLabel 위젯을 선택 가능하게 만들면 라벨의 전체를 비롯해 일부의 복사할 수 있다.
move-cursor GtkMovementStep step
gint num_steps
gboolean extended
GtkLabel을 마우스로 선택 가능하도록 허용했다면 커서가 표시될 것이다. 이후 라벨 주위에 커서를 이동시키면 이 시그널이 발생할 것이다. 콜백 함수는 선택 범위가 확장되었는지 여부를 수신한다.
populate-popup GtkMenu *popup_menu 사용자가 GtkLabel 위젯을 오른쪽 마우스로 클릭하였으며, 개발자는 새로운 메뉴를 채울(populate) 필요가 있다.
표 B-31. GtkLabel 시그널


시그널명 추가 매개변수 설명
set-scroll-adjustments GtkAdjustment *hadj
GtkAdjustment *vadj
레이아웃의 스크롤 조정이 변경되었다.
표 B-32. GtkLayout 시그널


시그널명 추가 매개변수 설명
move-scroll GtkScrollType type 사용자가 GtkScrollType 값들 중 하나를 이용해 메뉴를 스크롤하였다.
표 B-33. GtkMenu 시그널


시그널명 추가 매개변수 설명
activate None 메뉴 항목이 활성화되었다. 하위메뉴의 활성화를 포착해야 한다면 activate-item 시그널을 사용해야 한다.
activate-item None 메뉴 항목이 활성화되었거나, 메뉴 항목에 활성화된 하위메뉴가 있다.
toggle-size-allocate gint new_size 메뉴 항목에 새로운 크기가 할당되었다.
toggle-size-request gpointer size 메뉴 항목이 새로운 크기를 요청하였다.
표 B-34. GtkMenuItem 시그널


시그널명 추가 매개변수 설명
activate-current gboolean force_hide GtkMenuShell이 포함하는 현재 메뉴 항목을 활성화하라.
cancel None 선택된 메뉴 항목의 선택부분을 취소하라. 이는 selection-done 시그널을 발생시킬 것이다.
cycle-focus GtkDirectionType type 포커스가 주어진 방향에 있는 다른 메뉴 바로 이동하였다.
deactivate None GtkMenuShell 이 활성화되었고, 이는 주로 화면에서 제거되었음을 의미한다.
move-current GtkMenuDirectionType type 메뉴 셸에서 현재 메뉴 항목이 주어진 방향으로 이동하였다.
selection-done None 메뉴 셸 내에서 선택내용의 사용이 끝났다.
표 B-35. GtkMenuShell 시그널


시그널명 설명
show-menu 이 시그널은 메뉴가 표시되기 직전에 발생하여, 사용자가 메뉴를 확인하기 전에 개발자가 업데이트할 수 있는 기회를 제공한다.
표 B-36. GtkMenuToolButton 시그널


시그널명 추가 매개변수 설명
change-current-page gint pages_moved 현재 GtkNotebook이 표시하는 페이지가 변경되었다.
focus-tab GtkNotebookTab type 현재 탭을 변경하여 포커스가 이동하였다. 시그널이 처리되면 콜백 함수는 TRUE를 리턴한다.
move-focus-out GtkDirectionType type 포커스가 주어진 방향으로 GtkNotebook 위젯 밖으로 이동하였다.
page-added GtkWidget *child
guint page_num
GtkNotebook 위젯으로 페이지가 추가되었다. 이 시그널은 GTK+ 2.10 버전에 추가되었다.
page-removed GtkWidget *child
guint page_num
GtkNotebook 위젯에서 페이지가 제거되었다. 이 시그널은 GTK+ 2.10 버전에 추가되었다.
page-reordered GtkWidget *child
guint page_num
GtkNotebook 위젯 페이지가 재정렬되었다. 이 시그널은 GTK+ 2.10 버전에 추가되었다.
select-page gboolean focus_moved 자식 위젯에 새 페이지가 선택되었다. 이 시그널이 처리되면 콜백 함수는 TRUE를 리턴한다.
switch-page GtkNotebookPage *page
guint page_num
노트북 페이지가 주어진 페이지로 변경되었다.
표 B-37. GtkNotebook 시그널


시그널명 설명
destroy GtkObject 위젯이 그 참조를 모두 해제하면 위젯은 소멸될 것이다. 따라서 개발자가 모든 참조를 해제하면 객체가 최종화될 것이다.
표 B-38. GtkObject 시그널


시그널명 추가 매개변수 설명
accept-position None 페이지의 크기 조정이 완료되었고, 사용자가 Return 키, Enter 키, 스페이스 바 중 하나를 눌렀다. 이 시그널은 자식 위젯에게 포커스를 주어 활성화할 것이다. 이 시그널이 처리되면 콜백 함수는 TRUE를 리턴한다.
cancel-position None 사용자가 내용 변경을 취소하기 위해 Escape 키를 눌러 패인의 크기 조정이 중단되었다. 이 시그널이 처리되면 콜백 함수는 TRUE를 리턴한다.
cycle-child-focus gboolean reversed GtkPaned 위젯에 포커스가 있을 때 사용자가 F6 또는 Shift+F6을 눌러 자식의 포커스를 변경하였다. 이 시그널이 처리되면 콜백 함수는 TRUE를 리턴한다.
cycle-handle-focus gboolean reversed GtkPaned 위젯에 포커스가 있을 때 사용자가 Tab, Ctrl+Tab, Shift+Tab, Ctrl+Shift+Tab 중 하나를 누르면 시그널이 발생한다. 이 시그널이 처리되면 콜백 함수는 TRUE를 리턴한다.
move-handle GtkScrollType type 핸들이 제거되고 Left, Right, Up, Down, Page Up, Page Down, Home, End 키 중 하나에 포커스가 있을 때 해당 키가 눌러졌다. 이 시그널이 처리되면 콜백 함수는 TRUE를 리턴한다.
toggle-handle-focus None GtkPaned 위젯이 포커스 범위 내에 있었고, F8을 눌러 핸들로 포커스를 주거나 포커스를 없앴다. 이 시그널이 처리되면 콜백 함수는 TRUE를 리턴한다.
표 B-39. GtkPaned 시그널


시그널명 설명
embedded GtkPlug 창이 부모로 소켓 창에 할당되었다. GtkPlug는 최상위 수준의 위젯이 다른 프로세스로 포함되는 것을 허용한다.
표 B-40. GtkPlug 시그널


시그널명 추가 매개변수 설명
details-acquired gboolean success 프린트 백엔드로부터 프린터에 대한 상세한 정보가 요청되었다.
표 B-41. GtkPrinter 시그널


시그널명 설명
status-changed 인쇄 작업의 현재 상태가 변경되었다. 인쇄 작업의 새로운 상태를 확인하기 위해서는 gtk_print_job_get_status()를 사용해야 한다.
표 B-42. GtkPrintJob 시그널


시그널명 추가 매개변수 설명
begin-print GtkPrintContext *context 사용자가 프린터 설정 변경을 마쳤으나 렌더링이 아직 시작되지 않았다.
create-custom-widget None 대화상자가 방금 표시되었다. 콜백 함수로부터 다수의 위젯을 포함하는 위젯 또는 컨테이너 위젯을 리턴하여 대화상자의 GtkNotebook에 커스텀 페이지로 추가할 수 있다.
custom-widget-apply GtkWidget *widget 커스텀 위젯이 create-custom-widget 시그널 핸들러에 추가된 경우 begin-print가 발생하기 직전에 이 시그널이 발생된다.
done GtkPrintOperationResult result 인쇄가 완료되었고, 개발자는 결과를 볼 수 있다. 결과가 GTK_PRINT_OPERATION_RESULT_ERROR일 경우 gtk_print_operation_get_error()를 이용해 오류를 확인할 수 있다.
draw-page GtkPrintContext *context gint page_num 각 페이지가 Cairo 컨텍스트로 변환되어야 한다. 페이지를 수동으로 렌더링 시 이 콜백 함수를 이용해야 한다.
end-print GtkPrintContext *context 모든 페이지가 렌더링되었다.
paginate GtkPrintContext *context 페이지 렌더링이 시작되기 전에 begin-print 다음으로 이 시그널이 발생한다. 이 시그널은 FALSE가 리턴될 때까지 혹은 시그널이 처리되지 않는 한 계속 발생한다. 이는 문서를 단계별로 페이지로 나누도록 허용하여 사용자 인터페이스가 현저히 블로킹(blocked)되지 않도록 한다.
preview GtkPrintOperationPreview *preview
GtkPrintContext *context
GtkWindow *parent
사용자가 메인 인쇄 대화상자로부터 문서의 미리보기를 요청하였다. 이 시그널은 자신만의 미리보기 대화상자를 생성하도록 해준다. 이 시그널이 처리되지 않으면 기본 핸들러가 사용될 것이다. 인쇄 미리보기를 처리 중이라면 콜백 함수는 TRUE를 리턴한다.
request-page-setup GtkPrintContext *context gint page_num
GtkPageSetup *setup
이 시그널은 페이지마다 발생하여 페이지가 인쇄되기 전에 셋업을 마지막으로 편집할 수 있는 기회를 제공한다. 어떤 변경사항이든 현재 페이지에만 적용될 것이다!
status-changed None 인쇄 연산의 상태가 변경되었다. 가능한 값은 GtkPrintStatus 열거에서 정의되며, 현재 값은 gtk_print_operation_get_status()를 이용해 검색할 수 있다.
표 B-43. GtkPrintOperation 시그널


시그널명 추가 매개변수 설명
changed GtkRadioAction *current 그룹 내 두 개의 라디오 버튼의 상태가 변경되었다. 이 시그널은 선택내용이 변경될 때 라디오 버튼의 개수만큼 발생한다.
표 B-44. GtkRadioAction 시그널


시그널명 설명
group-changed 라디오 버튼이 새로운 그룹으로 전환되었거나, 라디오 버튼으로부터 제거되었다.
표 B-45. GtkRadioButton and GtkRadioMenuItem 시그널


시그널명 추가 매개변수 설명
adjust-bounds gdouble value GtkRange의 경계(bounds)가 특정 타입의 사용자 액션에 의해 수정되었다.
change-value GtkScrollType type gdouble value 범위(range)의 현재 값이 변경되었다. TRUE를 리턴하면 범위가 업데이트되는 것을 막을 수 있지만 표시된 값을 바람직한 소수 자리수로 직접 올림/내림해야 한다.
move-slider GtkScrollType type 사용자가 키보드 키, 즉 Page Up, Page Down, Home, End, 또는 슬라이더를 이동시키는 화살표 키 중에서 하나를 눌렀다.
value-changed None 범위 값이 변경되었다. 이는 사용자 액션이나 코드로부터의 호출로 인해 야기된다.
표 B-46. GtkRange 시그널


시그널명 추가 매개변수 설명
format-value gdouble value 스케일이 표시될 예정이지만 GTK+는 먼저 스케일을 표시하는 방법을 맞춤설정할 수 있는 기회를 제공한다. 콜백 함수는 개발자가 생성한 값을 표시하는 맞춤설정된 문자열을 리턴한다.
표 B-47. GtkScale 시그널


시그널명 추가 매개변수 설명
move-focus-out GtkDirectionType type 사용자가 Ctrl+Tab 또는 Ctrl+Shift+Tab을 눌러 스크롤이 있는 창에서 포커스를 이동하였다. 주어진 방향은 언제나 Ctrl+Tab 와 Ctrl+Shift+Tab 중 하나에 해당한다.
scroll-child GtkScrollType type gboolean horizontal 자식 위젯이 한 방향으로 스크롤되었다. 이는 마우스 또는 다음의 기본 키 바인딩으로 야기된다. Ctrl+Left, Ctrl+Right, Ctrl+Up, Ctrl+Down, Ctrl+Page Up, Ctrl+Page Down, Page Up, Page Down, Ctrl +Home, Ctrl+End, Home, End.
표 B-48. GtkScrolledWindow 시그널


시그널명 설명
plug-added 클라이언트가 성공적으로 소켓에 추가되었다.
plug-removed 클라이언트가 소켓에서 제거되었다. 보통은 기본 위젯인 GtkSocket 위젯을 소멸하길 원할 것이다. 이를 막기 위해서는 콜백 함수로부터 TRUE를 리턴하면 된다.
표 B-49. GtkSocket 시그널


시그널명 추가 매개변수 설명
change-value GtkScrollType type 표시된 스핀 버튼의 값이 변경되었다. 이는 다음 키보드 바인딩 중 하나를 누르면 실행된다. Up, Down, Page Up, Page Down, Ctrl+Page Up, Ctrl+Page Down.
input gpointer value 표시된 값이 변경되었다.
output None 실현된 위젯의 digits 프로퍼티를 변경하거나 새로운 값을 설정하여 표시된 스핀 버튼의 값이 변경되었다. 시그널을 성공적으로 처리했다면 추가 액션을 취하지 않도록 TRUE를 리턴해야 한다.
value-changed None 스핀 버튼 값의 변경을 요하는 스핀 버튼의 프로퍼티들 중 하나가 (value 또는 digits) 변경되었다.
wrapped None 스핀 버튼이 최대값에서 최소값으로, 또는 그 반대로 래핑되었다. 이 시그널은 GTK+ 2.10 버전에서 소개되었다.
표 B-50. GtkSpinButton 시그널


시그널명 추가 매개변수 설명
text-popped guint context_id gchar *message 상태 표시줄의 스택에서 맨 위의 메시지가 제거되었다. 그 다음 메시지가 표시될 것이다.
text-pushed guint context_id gchar *message 상태 표시줄의 스택에서 맨 위에 메시지가 추가되었다.
표 B-51. GtkStatusbar 시그널


시그널명 추가 매개변수 설명
activate None 상태 아이콘이 활성화되었다. 상태 아이콘이 어떻게 활성화되는지는 사용자의 플랫폼에 따라 결정된다. 어떤 경우든 적절하게 조치를 취해야 한다.
popup-menu guint button guint activate_time 상태 아이콘의 팝업 메뉴가 표시되었다. 함수 매개변수를 gtk_menu_popup()으로 전달할 수 있다. 팝업 메뉴 기능이 모든 플랫폼에서 이용할 수 있는 것은 아니므로 대안적인 기능을 항상 제공해야 한다!
size-changed gint size 상태 아이콘에 이용 가능한 영역이 변경되었다. 아이콘 크기를 스케일링한 경우 콜백 함수는 TRUE를 리턴한다. 그렇지 않으면 GTK+가 알아서 스케일링을 처리할 것이다.
표 B-52. GtkStatusIcon 시그널


시그널명 추가 매개변수 설명
apply-tag GtkTextTag *tag
GtkTextIter *start
GtkTextIter *end
GtkTextTag 위젯이 텍스트 버퍼의 섹션으로 적용되었다.
begin-user-action None 사용자가 텍스트 버퍼에서 특정한 타입의 액션을 시작하였다.
changed None 텍스트 버퍼가 어떤 방식으로 변경되어 시각적 또는 비시각적 텍스트, 이미지 혹은 위젯이 변경되는 결과를 야기하였다.
delete-range GtkTextIter *start
GtkTextIter *end
텍스트 버퍼로부터 텍스트가 삭제되었다.
end-user-action None 텍스트 버퍼에서 일부 타입의 사용자 액션이 종료되었다.
insert-child-anchor GtkTextIter *location
GtkTextChildAnchor *anchor
앵커(anchor)가 삽입되어 텍스트 버퍼가 다른 위젯을 포함하도록 허용한다.
insert-pixbuf GtkTextIter *location
GdkPixbuf *pixbuf
GdkPixbuf 위젯이 텍스트 버퍼로 삽입되었다.
insert-text GtkTextIter *location
gchar *new_text gint text_length
텍스트가 텍스트 버퍼로 삽입되었다.
mark-deleted GtkTextMark *mark 텍스트 버퍼로부터 GtkTextMark 객체가 삭제되었다.
mark-set GtkTextIter *location
GtkTextMark *mark
GtkTextMark 객체가 텍스트 버퍼로 추가되었다.
modified-changed None 텍스트 버퍼가 modified 또는 unmodified 상태로 설정되었다.
remove-tag GtkTextTag *tag
GtkTextIter *start
GtkTextIter *end
텍스트 버퍼로부터 주어진 반복자(iterator)들 사이에서 태그가 제거되었다.
표 B-53. GtkTextBuffer 시그널


시그널명 추가 매개변수 설명
event GObject *object
GdkEvent *event
GtkTextIter *location
GtkTextTag가 포함하는 텍스트의 범위 내에서 이벤트가 발생하였다.
표 B-54. GtkTextTag 시그널


시그널명 추가 매개변수 설명
tag-added GtkTextTag *tag GtkTextTag 객체가 태그 테이블로 추가되었다.
tag-changed GtkTextTag *tag gboolean size_changed 태그 테이블이 포함하는 태그의 프로퍼티가 변경되었다. 표시된 텍스트의 크기는 크기 외에 굵기나 폰트 패밀리와 같은 프로퍼티를 변경하여 변경이 가능하다.
tag-removed GtkTextTag *tag 태그 테이블로부터 GtkTextTag 객체가 제거되었다.
표 B-55. GtkTextTagTable 시그널


시그널명 추가 매개변수 설명
backspace None 커서 뒤의 문자 하나가 문서에서 삭제되었다.
copy-clipboard None 선택된 텍스트가 클립보드로 복사되었다.
cut-clipboard None 선택된 텍스트가 클립보드로 복사되고 문서에서 제거되었다.
delete-from-cursor GtkDeleteType type gint length 커서 주위에서 텍스트가 삭제되었다.
insert-at-cursor gchar *text 현재 커서 위치에 텍스트가 삽입되었다.
move-cursor GtkMovementStep step gint num_steps gboolean extended 커서가 새로운 위치로 이동하였으며, 현재 선택내용을 확장할 수도 있다.
move-focus GtkDirectionType type 포커스가 주어진 방향으로 이동하였다.
move-viewport GtkScrollStep step gint num_steps 특정 타입의 스크롤링이 발생하였으며, 주어진 단계에서 설명된다.
paste-clipboard None 클립보드의 텍스트가 문서로 삽입되었다.
populate-popup GtkMenu *menu 팝업 메뉴가 표시되어 편집에 이용할 수 있다.
select-all gboolean selected 문서 내 모든 텍스트가 선택 또는 선택 해제되었다.
set-anchor None 앵커가 텍스트 뷰로 추가되었다.
set-scroll-adjustments GtkAdjustment *hadj
GtkAdjustment *vadj
텍스트 뷰의 조정이 설정되었다.
toggle-overwrite None 덮어쓰는 키가 토글되어 켜지거나 꺼졌다.
표 B-56. GtkTextView 시그널


시그널명 설명
toggled 토글의 상태가 변경되었다. 토글이 활성화되거나 비활성화되었을 때 어떤 액션을 취하고 싶다면 이 시그널을 연결해야 한다.
표 B-57. GtkToggleAction, GtkToggleButton, and GtkToggleToolButton 시그널


시그널명 추가 매개변수 설명
focus-home-or-end gboolean focus_home 이 시그널은 툴바에서 첫 번째 요소 또는 마지막 요소로 이동하기 위해 GTK+가 내부적으로 사용하는 시그널로, 애플리케이션 코드에선 사용할 수 없다. 이 시그널이 처리되면 콜백 함수는 TRUE를 리턴한다.
move-focus GtkDirectionType type 이 시그널은 포커스가 있는 항목을 이동하기 위해 GTK+가 내부적으로 사용하는 시그널로, 애플리케이션 코드에선 사용할 수 없다.
orientation-changed GtkOrientation dir 툴바의 방향이 가로 또는 세로로 변경되었다.
popup-context-menu gint x_position gint y_position gint button 사용자가 툴바를 오른쪽 마우스로 클릭하였거나 키 바인딩을 눌러 팝업 메뉴를 표시하였다. 이 시그널은 툴바에 대한 커스텀 컨텍스트 메뉴를 표시할 때 사용할 수 있다. 시그널이 처리되면 TRUE를 리턴해야 한다.
style-changed GtkToolbarStyle style 툴바의 스타일이 변경되었다.
표 B-58. GtkToolbar 시그널


시그널명 설명
changed 마우스로 툴 버튼이 클릭되었다. 툴 버튼이 키보드 바인딩을 이용해 활성화되었을 때도 이 시그널을 발생시킬 수 있다.
표 B-59. GtkToolButton 시그널


시그널명 추가 매개변수 설명
create-menu-proxy None 툴바는 항목이 오버플로 메뉴에 표시되어야 하는지 여부를 알 필요가 있다. 이 시그널을 처리하기 위해서는 gtk_tool_item_set_proxy_menu_item()을 호출하거나 FALSE를 리턴해야만 오버플로 메뉴에 나타나는 것을 방지할 수 있다. 시그널이 처리되면 TRUE를 리턴해야 한다.
set-tooltip GtkTooltips *tooltips gchar *tip_text gchar *tip_private 항목의 툴팁이 주어진 설정으로 변경되었다.
toolbar-reconfigured None 툴 항목의 부모에서 일부 프로퍼티가 변경되어 자식이 변경될 필요가 있다. 이는 툴바의 방향, 스타일, 아이콘 크기, 또는 양감 스타일이 변경하였을 때 발생한다.
표 B-60. GtkToolItem 시그널


시그널명 추가 매개변수 설명
row-changed GtkTreePath *path GtkTreeIter *iter 트리 모델 내 주어진 위치의 행이 변경되었다.
row-deleted GtkTreePath *path 트리 모델 내 주어진 위치에서 행이 제거되었다.
row-has-child-toggled GtkTreePath *path GtkTreeIter *iter 주어진 위치의 행에 첫 번째 자식이 주어졌거나, 마지막으로 남은 자식이 제거되었다.
row-inserted GtkTreePath *path GtkTreeIter *iter 트리 모델에 행이 추가되었다. 이 시그널은 행이 추가된 직후에 호출되므로 아직 데이터를 포함하지 않을 수도 있다.
rows-reordered GtkTreePath *path GtkTreeIter *iter gpointer row_nums 트리 모델 내의 행들이 드래그 앤 드롭 외의 특정 방법에 따라 재정렬되었다. 콜백 함수는 재정렬된 행 번호의 배열을 수신한다.
표 B-61. GtkTreeModel 시그널


시그널명 설명
changed 선택내용이 변경되었을 가능성이 있다. 이 시그널은 항상 신뢰성이 있는 것은 아닌데, Shift 키를 이용해 다중 행을 선택 시 한 번만 발생하기도 하고, 아무 일도 일어나지 않았을 때에도 시그널이 발생할 수 있기 때문이다. 이 시그널에 대해서는 콜백 함수에 오류 보호(error protection)를 만들어야 한다.
표 B-62. GtkTreeSelection 시그널


시그널명 설명
sort-column-changed 정렬 열(sort column)은 GtkTreeSortable 모델 내에서 모든 행을 정렬하는 데에 사용할 열이다. 이 시그널은 선택된 정렬 열이 변경되면 발생한다.
표 B-63. GtkTreeSortable 시그널


시그널명 추가 매개변수 설명
columns-changed None 열이 트리 뷰에 추가되거나 그로부터 제거되어 열의 개수가 변경되었다.
cursor-changed None 셀 내에서 포커스가 있는 커서의 위치가 변경되었다.
expand-collapse-cursor-row gboolean logical gboolean expanded expand_children 커서 위치에 있는 행이 확장 또는 축소되어야 한다. 이 시그널이 처리되면 TRUE를 리턴해야 한다.
move-cursor GtkMovementStep step gint num_steps 다음 키 바인딩 중 하나를 이용해 커서가 이동되었다. Right, Left, Up, Down, Page Up, Page Down, Home, End. 시그널이 처리되면 TRUE를 리턴해야 한다.
row-activated GtkTreePath *path GtkTreeViewColumn *column 사용자가 행을 더블 클릭하였거나 gtk_tree_view_row_ activated()가 호출되었다. 다음 키 바인딩을 이용해도 시그널이 발생할 수 있다. Space, Shift+space bar, Return, Enter.
row-collapsed GtkTreeIter *iter GtkTreePath *path 주어진 행의 자식 노드들이 숨겨졌다.
row-expanded GtkTreeIter *iter GtkTreePath *path 주어진 행의 자식 노드들이 표시되었다.
select-all None 트리 뷰 내의 모든 행이 선택되었다. Ctrl+A 또는 Ctrl+/를 누르면 실행된다.
select-cursor-parent None 행에 포커스가 있을 때 사용자가 Backspace 키를 눌렀다. 이 시그널이 처리되면 콜백 함수는 TRUE를 리턴한다.
select-cursor-row gboolean editing 다음 키 바인딩 중 하나를 눌러 편집 불가한(noneditable) 행이 선택되었다. space bar, Shift+space bar, Return, Enter. 이 시그널이 처리되면 콜백 함수는 TRUE를 리턴한다.
set-scroll-adjustments GtkAdjustment *hadj GtkAdjustment *vadj 트리 뷰에 대해 수평 및 수직 스크롤 조정이 설정되었다. 이 시그널이 처리되면 콜백 함수는 TRUE를 리턴한다.
start-interactive-search None 트리 뷰에 포커스가 있을 때 사용자가 Crtl+F를 눌렀다. 시그널이 처리되면 TRUE를 리턴해야 한다.
test-collapse-row GtkTreeIter *iter GtkTreePath *path 행이 축소되기 직전이다. 축소를 하기 위해서는 콜백 함수가 TRUE를 리턴해야 한다.
test-expand-row GtkTreeIter *iter GtkTreePath *path 행이 확장되기 직전이다. 확장을 하기 위해서는 콜백 함수가 TRUE를 리턴해야 한다.
toggle-cursor-row None The user pressed Ctrl+space bar while a row had focus. 시그널이 처리되면 TRUE를 리턴해야 한다.
unselect-all None Shift+Ctrl+A 또는 Shift+Ctrl+/를 눌러 트리 뷰의 모든 행이 선택 해제되었다. 시그널이 처리되면 TRUE를 리턴해야 한다.
표 B-64. GtkTreeView 시그널


시그널명 설명
clicked 사용자가 트리 뷰 열의 헤더 버튼을 눌렀다. 이는 주로 정렬을 지원하는 뷰에서 해당 열에 따라 트리 뷰의 행을 정렬시키는 결과를 야기한다.
표 B-65. GtkTreeViewColumn 시그널


시그널명 추가 매개변수 설명
actions-changed None UI 관리자 내의 액션 집합이 변경되었다.
add-widget GtkWidget *widget 메뉴 표시줄 또는 툴바가 생성되었다. 팝업 메뉴에 대해서는 발생하지 않는 시그널이므로 팝업 메뉴를 검색하려면 gtk_ui_manager_get_widget()을 이용해야 할 것이다.
connect-proxy GtkAction *action GtkWidget *proxy 그룹 내 액션으로 프록시가 연결되었다. 다수의 액션에서 사용하는 맞춤설정에 이 시그널을 이용할 수 있다.
disconnect-proxy GtkAction *action GtkWidget *proxy 그룹 내 액션으로 프록시가 연결되었다.
post-activate GtkAction *action 액션이 방금 활성하되었다. 모든 액션의 활성화에 대한 설명(notice)을 검색 시 이 시그널을 이용할 수 있다.
pre-activate GtkAction *action 액션이 활성화되기 직전이다. 모든 액션의 활성화에 대한 설명을 검색 시 이 시그널을 이용할 수 있다.
표 B-66. GtkUIManager 시그널


시그널명 추가 매개변수 설명
set-scroll-adjustments GtkAdjustment *hadj GtkAdjustment *vadj 뷰포트에 대한 조정이 변경되었다.
표 B-67. GtkViewport 시그널


시그널명 추가 매개변수 설명
accel-closures-changed None 가속기가 위젯의 가속기 그룹으로 추가되었거나 그로부터 제거되엇다. 이 시그널은 가속기 경로가 설정되었을 때도 발생한다.
can-activate-accel guint signal_id 이 시그널을 이용해 가속기의 활성화 가능 여부에 따라 기본 핸들러를 오버라이드할 수 있다. 시그널의 활성화가 가능하다면 TRUE를 리턴해야 한다.
child-notify GParamSpec *pspec 위젯에 대한 자식 프로퍼티가 변경되었다. 시그널 프로퍼티를 감시할 때 이 시그널을 이용할 수 있다.
composited-changed None 위젯의 composited 상태가 변경되었는데, composited란 위젯의 알파 채널이 유효하게 간주될 것인지(honored) 여부를 결정하는 프로퍼티에 해당한다.
direction-changed GtkTextDirection dir 위젯 내에서 텍스트의 방향이 변경되었다. 주로 gtk_widget_set_direction()의 호출로 시작된다.
drag-begin GdkDragContext *context 드래그 액션이 시작되었다. 이 시그널은 드래그 소스에서 발생한다. 이 시그널을 이용해 드래그 시 표시할 커스텀 아이콘을 설정할 수 있다.
drag-data-delete GdkDragContext *context 드래그 액션이 성공적으로 완료되었다. 이 시그널은 액션이 완료된 후 드래그하던 데이터를 삭제할 때 사용된다.
drag-data-get GdkDragContext *context GtkSelectionData *data guint info guint timestamp 드롭 사이트(drop site)가 드래그된 데이터를 요청하였다.
drag-data-received GdkDragContext *context gint x_position gint y_position GtkSelectionData *data guint int guint timestamp 드롭 사이트가 드래그 데이터를 수신하였다.
drag-drop GdkDragContext *context gint x_position gint y_position guint timestamp 사용자가 데이터를 위젯에 드롭하였다. 개발자는 커서의 위치가 허용되는 드롭 영역 내에 있는지 결정해야 한다. 드롭이 허용되면 TRUE를 리턴해야 한다.
drag-end GdkDragContext *context 드래그 액션이 완료되었으며, 이를 이용해 drag-begin 콜백에서 실행된 액션을 실행 취소할 수 있다.
drag-leave GdkDragContext *context guint timestamp 커서가 드롭 사이트 주위 영역을 벗어났다. 이 시그널을 이용해 drag-motion 콜백에서 실행된 액션을 실행 취소할 수 있다.
drag-motion GdkDragContext *context gint x_position gint y_position guint timestamp 드래그 도중에 커서가 드롭 사이트 위로 이동하엿다. 커서가 허용되는 드롭 영역 내에 있을 경우 TRUE를 리턴해야 한다.
focus GtkDirectionType type 위젯이 포커스를 받았다. 시그널이 처리되면 TRUE를 리턴해야 한다.
grab-focus None gtk_widget_grab_focus()를 호출함으로써 위젯이 강제로 포커스를 받았다. 니모닉 가속기를 이용해 시그널을 시작할 수도 있다.
grab-notify gboolean was_grabbed 다른 위젯에서 gtk_grab_add()를 명시적으로 호출하여 위젯에 그림자가 생겼거나 (shadowed), 제거된 그랩으로 인해 그림자가 해제되었다.
hide None 위젯이 사용자의 뷰에서 숨겨졌다. 누락된 위젯을 포함하도록 사용자 인터페이스가 다시 그려질 것이다.
hierarchy-changed GtkWidget *toplevel 최상위 수준의 조상이 GtkWindow 위젯일 때 위젯은 앵커(anchored)된 것으로 간주된다. 이 시그널은 자식 위젯이 앵커 또는 앵커해제 될 때 발생할 수 있다.
map None 위젯이 매핑을 요청하였다. 이 시그널은 gtk_widget_show() 또는 gtk_widget_map()을 호출하여 시작할 수 있다.
mnemonic-activate gboolean shift_focus 위젯을 활성화하기 위해 니모닉 가속기가 사용되었다.
parent-set GtkObject *old_parent 부모 위젯이 변경되었다.
popup-menu None 사용자가 팝업 메뉴를 표시할 것을 요청하였다. 처리되고 나면 이 콜백 함수는 TRUE를 리턴한다.
realize None gtk_widget_realize()의 호출로 인해 위젯이 실현되도록 요청하였다. 자신만의 커스텀 위젯을 생성하지 않는 한 보통 코드에서 명시적으로 호출하지는 않는다.
screen-changed GdkScreen *screen 위젯이 새로운 화면으로 이동하였다.
selection-get GtkSelectionData *data guint info guint timestamp 위젯으로부터 선택내용 데이터가 요청되었다.
selection-received GtkSelectionData *data guint timestamp 선택내용의 소유주가 위젯의 선택내용 데이터의 요청에 응답하였다.
show None 위젯이 표시되도록(visible) 설정되었다. 사용자 인터페이스는 새로 표시되는 위젯을 포함하도록 다시 그려질 것이다.
show-help GtkWidgetHelpType type 사용자가 Ctrl+F1을 눌러 위젯과 관련해 도움을 요청하였다. 도움의 유형은 GTK_WIDGET_HELP_TOOLTIP과 GTK_WIDGET_HELP_WHATS_THIS로 구성된 GtkWidgetHelpType에서 정의된다.
size-allocate GtkAllocation *alloc 위젯에 새로운 크기 할당이 부여되었다.
size-request GtkRequisition *req 위젯이 gtk_widget_set_size_request()를 이용해 새로운 크기를 요청하였다.
state-changed GtkStateType state 위젯의 현재 크기가 주어진 상태로 변경되었다.
style-set GtkStyle *prev_style 위젯의 스타일이 수정되었다. 이는 전체 스타일을 변경하거나 스타일의 특정 요소를 변경하여 야기된다.
unmap None 위젯이 매핑해제를 요청하였다. 이는 gtk_widget_unmap()을 호출하여 시작할 수 있다.
unrealize None 위젯이 실현 취소(unrealized)를 요청하였다. 이는 모든 자식 위젯의 자원과 연관된 자원을 모두 해제하는 결과를 야기할 것이다.
표 B-68. 이벤트가 제거된 GtkWidget 시그널


시그널명 추가 매개변수 설명
activate-default None 창의 기본 위젯이 활성화되었다. 보통 사용자가 Retur 키 또는 Enter 키를 눌러서 발생한다.
activate-focus None 포커스가 있는 창의 자식 위젯이 활성화되었다. 보통 사용자가 스페이스 바를 눌러서 발생한다.
frame-event GdkEvent *event 창의 프레임에서 포커스의 변경 또는 key-press-event, key-release-event 이외의 이벤트가 수신되었다.
keys-changed None 니모닉 가속기가 창 내에서 추가, 제거 또는 변경되었다. 니모닉 수정자를 설정 시 발생하기도 한다.
move-focus GtkDirectionType type 창의 자식 위젯 내에서 포커스가 변경되었다. 주로 사용자가 다음 키 바인딩 중 하나를 누르면 발생한다. Tab, Shift+Tab, Up, Down, Left, Right.
set-focus GtkWidget *widget 포커스가 창의 다른 자식으로 변경되었다.
표 B-69. GtkWindow 시그널


Notes