FoundationsofGTKDevelopment:Appendix B
- 부록 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 시그널 |